当前位置: 首页 > 面试题库 >

通过page.evaluate传递参数

苗阳文
2023-03-14
问题内容

我正在使用PhantomJS
page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。

page.open(url, function() {
  var foo = 42;

  page.evaluate(function() {
    // this code has no access to foo
    console.log(foo);
  });
}

如何将参数推入页面?


问题答案:

我遇到了确切的问题。可以使用一些技巧,因为它page.evaluate也可以接受字符串。

有几种方法可以执行此操作,但是我使用了一个称为的包装器evaluate,该包装器接受其他参数以传递给必须在Webkit端进行评估的函数。您可以这样使用它:

page.open(url, function() {
  var foo = 42;

  evaluate(page, function(foo) {
    // this code has now has access to foo
    console.log(foo);
  }, foo);
});

这是evaluate()函数:

/*
 * This function wraps WebPage.evaluate, and offers the possibility to pass
 * parameters into the webpage function. The PhantomJS issue is here:
 * 
 *   http://code.google.com/p/phantomjs/issues/detail?id=132
 * 
 * This is from comment #43.
 */
function evaluate(page, func) {
    var args = [].slice.call(arguments, 2);
    var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
    return page.evaluate(fn);
}


 类似资料:
  • 问题内容: 我使用JavaScript来执行JNLP,最终将执行我的客户端。 我试图通过JavaScript执行将参数传递给JNLP,并在客户端中通过JNLP传递这些参数。 JavaScript正在执行以下URL,例如: 现在,我的JNLP将尝试以这种方式获取参数: 但这没有用。 我无法以这种方式在客户端代码中检索这些参数: JNLP位于APACHE2.2中 知道有什么问题吗? 问题答案: 为了能

  • 问题内容: 没有参数 带参数 我想得到。我怎么才能得到它? 问题答案: 试试这个: 并在您的职能:

  • 问题内容: 这是我的Java代码: 我这样称呼它: 问题是呼叫保持发布零零零,似乎我没有正确传递x和y。 更新资料 回答之后,我将请求更改为: 服务是: 但我仍然有同样的问题。这是服务器的响应: 您可以在末尾看到零:( 问题答案: (请注意,不是)是表单数据()向其发送了请求的正文,其中您的资源方法应更像 并且以下请求将起作用 注意: 在Windows中,必须使用双引号() 您甚至可以分离键值对

  • 我正在学习一门改造课程,在这门课程中,我创建了一个带有api的小型后端,其中我有一个POST方法来执行教师登录。在课程中,他所做的是创建一名教师,并使用set方法向他传递电子邮件和密码,这是该方法在API中接收的内容。 我希望这样做,在电话改造中,您可以直接通过此电子邮件和密码,我已通过以下方式完成: 这就是我的模范老师: 最后,我呼吁进行以下改造: 然而,当我运行应用程序并通过表单传递电子邮件和

  • 问题内容: 我使用window.open方法打开了带有参数的新站点,我必须通过post方法来传递它。我找到了解决方案,但不幸的是它不起作用。这是我的代码: 接下来,我创建数组: 并通过以下方式调用函数: 但是,当我单击此按钮时,站点test.asp为空(当然,我尝试获取传递值- )。 我怎么解决这个问题,为什么我不能获得通过值? 问题答案: 无需将表单写入新窗口(要用HTML代码中的值进行编码就很

  • 本文向大家介绍JavaScript 通过引用或值传递参数,包括了JavaScript 通过引用或值传递参数的使用技巧和注意事项,需要的朋友参考一下 示例 在JavaScript中,所有参数均按值传递。当函数将新值分配给参数变量时,该更改将对调用者不可见: 但是,对此类参数的(嵌套)属性所做的更改对调用者将是可见的: 这可以看作是通过引用进行的调用:尽管函数无法通过为其分配新值来更改调用者的对象,但