如何确定URL是否已启动并正在运行?

时间:2015-04-27 07:09:39

标签: javascript url iframe

我有四个网址,我正在尝试构建一个简单的HTML-JavaDcript方法,以确定网址是否正常运行。

网址如下:

  • dim sPath as string, sFullPath as string sFullPath = "C:/Videos/New/VideoName.mp4" ' or C:\Videos\New\VideoName.mp4 if len(sFullPath) > len(replace(sFullPath, Chr(47), vbnullstring)) then sPath = replace(sFullPath, split(sFullPath, Chr(47))(ubound(split(sFullPath, Chr(47)))), vbnullstring) debug.print sPath & " with forward slashes" elseif len(sFullPath) > len(replace(sFullPath, Chr(92), vbnullstring)) then sPath = replace(sFullPath, split(sFullPath, Chr(92))(ubound(split(sFullPath, Chr(92)))), vbnullstring) debug.print sPath & " with back-slashes" else debug.print "unknown separator" end if
  • https://www.kbhome1.com
  • https://www.kbhome2.com
  • https://www.kbhome3.com

现在,当使用IE中的地址栏加载网址时,它们都提供了一个公共文本,其中包含与使用的URL相关的一些变体:

  • https://www.kbhome4.com
  • Your app1 is up and running
  • Your app2 is up and running
  • Your app3 is up and running

因此,我尝试在iframe中加载网址,然后我尝试获取公共文本Your app4 is up and running,这会让我知道各个网址已启动。现在问题是URL被托管在不同的服务器中,因此Your app因此我不断收到此错误:

  

iframe错误权限被拒绝访问属性

现在有没有人知道其他任何方式来实现我想做的事情?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

为您提供几种选择:

  1. 听起来您已经打开了iframe,并在其中加载了这些网址。您可以通过postMessage(允许跨源)向iframe窗口发送消息,并让他们回复说明他们是否已启动。例如,在主窗口中:

    window.addEventListener("message", function(e) {
        // Check iframe reply's origin and handle it here
    }, false);
    
    theIframe.contentWindow.postMessage("ack", "https://kbhome1.com");
    

    在那里,您正在收听回复消息,并向iframe发送消息,要求其回复。

    有关postMessage的更多信息:

  2. 但它不需要那么复杂。如果您只想确保这些应用程序已启动,请在每个应用程序上添加一个小脚本文件,例如: https://kbhome1.com/up.js,其中包含:

    hostStatus("kbhome1", true);
    

    ...然后在您的页面上,添加一个功能:

    function hostStatus(host, up) {
        // ...mark that host as "up" or "down" based on the `up` flag
    }
    

    ...并为每个主机添加一个脚本标记:

    var script = document.createElement('script');
    script.src = "https://kbhome1.com/up.js";
    script.onerror = function() {
        hostStatus("kbhome1", false); // It's not up
    };
    document.querySelector("script").parentNode.appendChild(script);
    

    如果您看到hostIsUp电话,它就会响起;如果你不这样做,那就不是(我们可以使用上面的error事件来获得积极的“它不会”结果)。

    如果您正在进行“实时”状态页面,则可以多次执行此操作。

答案 1 :(得分:0)

您可能会尝试向这些网址发送简单的 AJAX GET 请求,看看您是否获得 200 状态。

同样,对于您可能尝试使用 jsonp 数据类型的跨域问题,这可能会失败。