【问题标题】:Is it possible for shell script to detect whether JavaScript is running on firefox?shell 脚本是否可以检测 JavaScript 是否在 firefox 上运行?
【发布时间】:2012-11-07 15:48:24
【问题描述】:

我用 JavaScript、PHP 文件和 shell 脚本编写了一个 HTML 页面 他们都在同一台机器上 我运行 shell 脚本,它会用 Firefox 打开 html 页面, 当 JavaScript 完成时,它将 POST 到 getdata.php

<form id="hidden_form" method="POST" action="getdata.php" ></form>

getdata.php 会做一些事情,然后它会向 shell 脚本发送信号

以上是正常行为,恐怕在某些时候,PHP 或 JavaScript 会出错并且不会向 shell 脚本发送信号

有什么好的简单的shell脚本检测JavaScript是否在运行的方法吗?

下面的一个人提到我可以让javascript定期向服务器发送请求,比如每2分钟一次,但是如何让shell脚本注意到这一点/得到信号?

【问题讨论】:

    标签: php javascript shell


    【解决方案1】:

    正如有人建议的那样,您可以使用 setInterval 轮询服务器以查看 javascript 引擎是否仍在运行,但这也可能意味着只有执行 setInterval 的 javascript 线程才是实际运行的线程(取决于可能出现的错误类型)出现)。您可以将帖子发送到“status.php”,它会触摸/写入磁盘上的文件,bash 脚本可以轮询该文件以查看它是否定期更新。

    不过,我建议您研究一下 phantomjs 之类的东西,它可以让您解决这类问题。

    【讨论】:

    • 当我发布到status.php时,status.php会自动显示在浏览器上,代替原来的html页面,如何防止这种情况发生?
    • 使用 XMLHTTPRequest 调用,大多数 javascript 库以某种方式包装它(例如 jQuery 与 $.get / $.post / $.ajax)。
    • 有任何代码sn-ps吗?我认为 get 和 post 仍然请求该 php 页面返回浏览器
    【解决方案2】:

    没有。

    记住:Javascript 在客户端浏览器上远程运行; PHP(和你的 shell 脚本)在服务器上。

    可以做的是在发送网页时(在服务器上)设置警报,并在触发时调用警报处理程序:

    【讨论】:

    • 他们都在同一台机器上,我只是使用本地apache服务器
    • 运行时间可变,不适合报警
    【解决方案3】:

    如果您的 JavaScript 正在运行一个处理时间较长的脚本,您可能会在设定的时间间隔内间歇性地向服务器提交请求。如果您在设定的时间段后没有看到请求...(间隔 x2 或 w/e)并且在完成后未收到信号,您可以假设 JavaScript 本身已停止运行/中断。

    setInterval("methodofcommunicatingtotheserver", 1000); 
    

    等等。

    【讨论】:

      【解决方案4】:

      ..如前所述:没有。

      在这种情况下,您最好的选择是:

      1. 重新设计您的脚本。它是否绝对有必要通过浏览器内的javascript将请求发送到php页面?
      2. 如果以上答案是肯定的,请查看Selenium,尤其是Selenium WebDriver

      它不为开箱即用的 bash 脚本提供绑定,但它很容易在 Python(或 PHP,他们说)等其他语言中使用。

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 2012-06-03
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多