V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guoqiao
V2EX  ›  程序员

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

  •  
  •   guoqiao · 2014-07-01 18:10:29 +08:00 · 4726 次点击
    这是一个创建于 3789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    foo.js中的内容引用自某个第三方网站, 加载后它会针对当前dom执行一些操作.
    为便于理解, 你可以想象它里面就一行alert:

    alert('hello world!');

    在dom第一次完整加载的时候, 很显然这行alert会执行.
    现在我的问题是, dom加载已经完成后, 如何通过js重新触发foo.js中的代码?
    11 条回复    2014-07-03 16:21:47 +08:00
    lichao
        1
    lichao  
       2014-07-01 18:12:01 +08:00
    document.write('<script src="path/to/foo.js"></script>')
    jsonline
        2
    jsonline  
       2014-07-01 18:13:25 +08:00
    1楼是对的,你只能再次加载一遍。
    guoqiao
        3
    guoqiao  
    OP
       2014-07-01 18:18:30 +08:00
    @lichao
    @jsonline
    谢谢. 貌似这个答案可以实现我的需求. 不过只能用document.write这种方式才能触发吗? 有没有更好点的方法.
    mcfog
        4
    mcfog  
       2014-07-01 18:23:14 +08:00
    用 document.createElement('script') 创建节点后插入dom树内
    Tonni
        5
    Tonni  
       2014-07-01 19:01:49 +08:00 via Android
    再次将脚本填充到dom节点
    sanddudu
        6
    sanddudu  
       2014-07-01 19:11:40 +08:00
    我第一眼以为是来测试 XSS 的
    知乎也有这样的问题,然后被 XSS
    luoyou1014
        7
    luoyou1014  
       2014-07-02 19:27:56 +08:00
    楼上说的方法操作起来感觉比较别扭啊, 我说个简单的.

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

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

    有的时候以文件为单位思考问题容易被禁锢, 把函数放第一位就好多了, 怎样重新执行一段代码? 将其当到函数里面即可.
    guoqiao
        8
    guoqiao  
    OP
       2014-07-03 06:20:43 +08:00
    @luoyou1014 他们的方法正是我想要的. 你说的这个方案不适合我的场景.
    luoyou1014
        9
    luoyou1014  
       2014-07-03 09:39:41 +08:00
    @guoqiao 那种使用方法是不提倡的, 能不用则不用.
    rekey
        10
    rekey  
       2014-07-03 15:22:59 +08:00
    楼主可能需要考虑一个问题,之前做出的事情是否需要抹去。
    guoqiao
        11
    guoqiao  
    OP
       2014-07-03 16:21:47 +08:00
    @rekey 是的,你说的对,确实出现了重复执行的问题, 我现在正在想办法解决.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:45 · PVG 23:45 · LAX 07:45 · JFK 10:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.