2015-01-12 79 views
3

有誰知道是否可以在JavaScript中檢測到Chrome因混合內容限制而阻塞了內容?我看到在控制檯中有錯誤消息,但是這似乎並不是一個例外,因爲使用try/catch沒有捕捉任何東西。以編程方式檢測Chrome中的混合內容阻塞

所以問題是,如何檢測內容被封鎖了?

謝謝!

+0

您是否嘗試過服務了從一個不安全的域的JavaScript文件,能夠設置全局在'window'對象中變量?邏輯上,如果腳本被阻止,它將不會執行。 – amphetamachine

+0

嗨,感謝您的建議,但不幸的是,我認爲這不是我們的選擇。 – Stian

+0

如果在DOM結構中包含'',那麼使用JavaScript(在DOM就緒狀態下)來獲取它的寬度,如果它爲0,則加載失敗。 TMTOWTDI – amphetamachine

回答

0

我有一個類似的方案,其中我盲目地嵌入內部框架,可以是上HTTPHTTPS域。我發現一個骯髒的解決辦法,做工作,假設有如下:

  • 你有兩個HTTPHTTPS版本您的網站。
  • 你有的jQuery可用

我評論的代碼,所以很容易理解:

<script type="text/javascript"> 
    $(function() { /* when DOM is fully loaded */ 
     if ("https:" == window.location.protocol) 
     { /* we are on the SSL (HTTPS) version of our website */ 
      $.each($("iframe"), function (k, iframe) 
      { /* iterate through all iframes */ 
       if ("http:" == $(iframe).attr('src').substring(0, 5)) 
       { /* there's at least an iframe with non-SSL (HTTP) content (that will be blocked by the browser) */ 
        /* lets redirect user to the non-SSL (HTTP) version of the website */ 
        window.location = window.location.href.replace(/^https:\/\//ig, "http://"); 
        return false; 
       } 
      }) 
     } 
    }); 
</script> 
+0

感謝您的答案。不幸的是,我們不能使用這種方法,因爲我們只使用HTTPS運行我們的網站。 – Stian