【问题标题】:JavaScript: Is there a way to fire an javascript function remotely? Like an onClickJavaScript:有没有办法远程触发 javascript 函数?像 onClick
【发布时间】:2014-03-27 02:45:41
【问题描述】:

我正在寻找一种在远程网页中触发 JavaScript 事件而无需在浏览器上打开它的方法。

我的意思是,让我解释一下我的情况: 我现在要做的是,我在 GreaseMonkey 的特定网页上运行了两个脚本。 A页上的脚本A,B页上的脚本B。

脚本 A 不断向页面 B 发送 xmlHttpRequests,它获取数据,在 reg-exp 中处理,并进行一些比较。当我对脚本 A 的条件满足时,我发送一个 window.open 来打开页面 B。

在页面B,我有脚本B运行,脚本B再次检查页面B的内容,看看是否满足脚本A的SAME条件,进行双重检查,然后触发我需要的点击事件.

问题是,太慢了。我需要优化它。 打开页面 B 并加载它的内容太慢了,比如很多图像、背景、css 样式等。加载页面需要几秒钟,准确地说是 5 到 10 秒。我需要它在 1 或 2 秒以内。

有没有办法在页面 B 上触发 JavaScript 事件,而不加载页面 B 的全部内容?

谢谢。

【问题讨论】:

    标签: javascript jquery html xmlhttprequest request


    【解决方案1】:

    不可靠。

    您可以设置一个节点实例来请求页面,并针对 http 响应运行服务器端 JavaScript,但这与在浏览器窗口中运行可以与页面脚本交互的脚本不同运行,以及它从其他 URL 中提取的资产。

    要在页面上触发事件,必须将其加载到浏览器中。不过,您可以使用 Phantom 或其他无头浏览器加快速度。

    如果您希望性能和质量优于greasemonkey,我会推荐后者。它有点复杂,但如果这是一个持续的比较,那么将它自动放到后台并远离渲染浏览器似乎是最好的。

    【讨论】:

    • 我已经用 phantom 做了一些事情,但是没有成功,然后我花了太多时间在一个小问题上退出了。问题是我必须在Page B上登录,然后,我在Phantom上失败了,也许我需要再试一次,在那里多加努力。正如你所说,我同意,没有渲染浏览器会很糟​​糕。
    【解决方案2】:

    我的解决方案可能并不完美,但你可以做下一个(就像你在 GreaseMonkey 上一样)

    1- XMLHTTP请求页面B

    2-进行比较

    3- 如果满意,请将您从第一个 XMLHTTPrequest 中获得的 innerHTML 放入您创建的新 div/iframe 中并使其不可见

    4- 您可以在该 div/iframe 中运行 click 事件

    【讨论】:

    • 我不知道它是否有效,因为我没有页面 B 脚本。我的意思是,我可以创建 div、元素,但是当元素被点击时页面 B 运行的脚本呢?
    • 我什至认为标头和脚本都是由服务器返回的。将它们放在 iframe 元素中,它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多