【问题标题】:PhantomJS: Add Javascript include to web page (not to PhantomJS environment)PhantomJS:将 Javascript 包含添加到网页(不是 PhantomJS 环境)
【发布时间】:2014-01-31 11:46:07
【问题描述】:

我想在 PhantomJS 访问的网页中添加一个 JavaScript <script></script> 标签,包含或获取不受信任的代码,并让页面的行为就像页面最初包含该标签一样。

includeJs()/injectJs() 不做我需要的事情 - 他们将代码注入到我的 PhantomJS 环境中,但我需要将我的代码注入到网页中。此外,这些函数将我的 PhantomJS 局部变量暴露给不受信任的代码,这是我不想要的。

evaluate() 也不能满足我的需要,因为它不会接受包含不受信任的 JavaScript 的字符串。相反,它希望我的 PhantomJS 脚本包含我编写的函数。

如何将不受信任的 JavaScript 注入使用 PhantomJS 访问的网页?

【问题讨论】:

    标签: javascript phantomjs


    【解决方案1】:

    事实证明page.evaluate() 接受传递给您的 JavaScript 函数的参数。利用这一点,我能够将要在页面上运行的实际 JavaScript 传递到从 page.evaluate() 运行的函数中,该函数将脚本块注入页面:

    page = ...
    
    function inject_js(js_code) {                                                                                                                                                               
        page.evaluate(function(js_code) {                                                                                                                                                       
            var js_block = document.createElement('script');                                                                                                                                    
            js_block.type = 'text/javascript';                                                                                                                                                  
            js_block.innerHTML = js_code;                                                                                                                                                       
            document.getElementsByTagName('body')[0].appendChild(js_block);                                                                                                                     
        }, js_code);                                                                                                                                                                            
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      相关资源
      最近更新 更多