【问题标题】:bind polyfill for PhantomJS为 PhantomJS 绑定 polyfill
【发布时间】:2014-06-14 21:09:40
【问题描述】:

我正在尝试使用 es5-shim.js 在我的 phantomjs 文件中添加绑定 polyfill。

我尝试使用 require() 包含 es5-shim.js,但在执行 phantomjs 文件时仍然出现错误。正确的使用方法是什么?

【问题讨论】:

  • 检查this thread 有一些关于可以用来处理它的 polyfill 的建议。
  • 我只需要 require('./lib/es5-shim.js'); 就可以了,它对我有用。我使用的垫片可以找到here

标签: phantomjs es5-shim


【解决方案1】:

我尝试了 this link 中的 polyfill,它似乎对我来说效果很好。

请注意,phantomjs 脚本在 WebKit 的 JavaScriptCore 引擎(使用 ES5)内运行,因此这些功能中的大部分应该已经开箱即用。

D:\>phantomjs.exe

phantomjs> console.log(Object.keys)
function keys() {
    [native code]
}
undefined

phantomjs> var shim = require("D:\\es5-shim.js");
undefined

phantomjs> console.log(Object.keys)
function keys(object) {
        if (isArguments(object)) {
            return originalKeys(ArrayPrototype.slice.call(object));
        } else {
            return originalKeys(object);
        }
    }

【讨论】:

  • 感谢您将我指向该垫片的链接!你绝对活得更安全!
  • 嘿@steven,或者任何人:我正在通过带有 python 绑定的 selenium webdriver 实现 phantomJS。如何添加此 shim 以便将其包含在我的 PJS webriver 实例的整个会话中?我的 webdriver 实例没有“require”方法,很难用谷歌搜索它:-)。这似乎不值得提出一个新的 SO 问题,但让我感到沮丧的是,我已经接近解决这个问题但似乎无法实施解决方案。
  • 我对@9​​87654323@不够熟悉,但我的猜测是,由于它运行的是 Selenium 设计的 webdriver 协议(远在 PhantomJS 之前),因此与 PhantomJS 嵌入式 JavaScriptCore 引擎和所有命令没有交互直接进入充当浏览器的 Webkit 实例。
  • 我想我跟着,但我仍然不清楚我如何/在哪里插入垫片。请帮忙。
  • 我基本上是说你不能,除非你直接通过命令行使用 PhantomJS。
猜你喜欢
  • 2016-08-04
  • 2015-04-10
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2014-02-09
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多