<script src="path/to/foo.js"></script>, 如何用 js 触发 foo.js 中的代码重新执行?

2014 年 7 月 1 日
 guoqiao
foo.js中的内容引用自某个第三方网站, 加载后它会针对当前dom执行一些操作.
为便于理解, 你可以想象它里面就一行alert:

alert('hello world!');

在dom第一次完整加载的时候, 很显然这行alert会执行.
现在我的问题是, dom加载已经完成后, 如何通过js重新触发foo.js中的代码?
5458 次点击
所在节点    程序员
11 条回复
lichao
2014 年 7 月 1 日
document.write('<script src="path/to/foo.js"></script>')
jsonline
2014 年 7 月 1 日
1楼是对的,你只能再次加载一遍。
guoqiao
2014 年 7 月 1 日
@lichao
@jsonline
谢谢. 貌似这个答案可以实现我的需求. 不过只能用document.write这种方式才能触发吗? 有没有更好点的方法.
mcfog
2014 年 7 月 1 日
用 document.createElement('script') 创建节点后插入dom树内
Tonni
2014 年 7 月 1 日
再次将脚本填充到dom节点
sanddudu
2014 年 7 月 1 日
我第一眼以为是来测试 XSS 的
知乎也有这样的问题,然后被 XSS
luoyou1014
2014 年 7 月 2 日
楼上说的方法操作起来感觉比较别扭啊, 我说个简单的.

把foo.js里面所有的内容全部写到一个函数里面, 然后在foo.js最下面加一句函数调用.

别的地方就可以重复调用了.

有的时候以文件为单位思考问题容易被禁锢, 把函数放第一位就好多了, 怎样重新执行一段代码? 将其当到函数里面即可.
guoqiao
2014 年 7 月 3 日
@luoyou1014 他们的方法正是我想要的. 你说的这个方案不适合我的场景.
luoyou1014
2014 年 7 月 3 日
@guoqiao 那种使用方法是不提倡的, 能不用则不用.
rekey
2014 年 7 月 3 日
楼主可能需要考虑一个问题,之前做出的事情是否需要抹去。
guoqiao
2014 年 7 月 3 日
@rekey 是的,你说的对,确实出现了重复执行的问题, 我现在正在想办法解决.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX