2012-12-10 41 views
0

我想獲取安全區域(Int​​ernet區域/本地Intranet)的許多URL在同一個域中。我認爲最好的解決方案是通過iFrame獲得這一點。 @Teemu。代碼現在可用。非常感謝你。但目前存在一個問題:它顯示錯誤的文本。雖然頁面位於受信任區域(本地Intranet)中,但他顯示「不受信任」(Internet區域)。任何想法爲什麼?從iFrame獲取內容,錯誤在哪裏?

<html> 
<head> 
<script type="text/javascript"> 


function getZone() { 
    var text = new Array(); 
    document.getElementsByClass('iframeNames'); 

var test; 
for (var i = 0; i < document.frames.length; i++) { 
try { 
    test = document.frame[i].contentWindow.document; 
    text[i] = "Trusted (Local Intranet)"; 
} catch (e) { 
    text[i] = "Untrusted (Internet Zone)"; 
} 
} //end-for 

    var showText = getElementsByClass("zone"); 
    for (var i = 0; i < showText.length; i++) { 
     setText(showText[i], text[i]); 
    }; 
} //end getZone() 

function setText(showText, text) { 
    showText.innerHTML = text; 
} //end setText 

if (document.getElementsByClassName) { 
    getElementsByClass = function (classList, node) { 
     return (node || document).getElementsByClassName(classList); 
    }; 
} 

</script> 
</head> 

<style type="text/css"> 
tr:nth-child(2n) { 
    background-color: #ddd; 
} 
.format { 
    background-color: #ffff;} 

#formatierung { 
margin-left: 10px; 
margin-top: 30px; 
font-family: Arial; 
font-size: 13px; 

} 

</style> 

<body> 

<iframe src = "http://example.com" class = "iframeNames" width = "0" 
height ="0"></iframe> 
<iframe src = "http://example.com/index/" class = "iframeNames" width = "0" 
height = "0"></iframe> 

<script type = "text/javascript"> 
window.onload = function() { 

getZone(); 

}; 
</script> 


<div id = "formatierung"> 

<table width = "100%"> 


<tr class = "format"><td><h2>System</h2></td><td><h2>Check Security-Zone</h2></td></tr> 
<tr><td>example1</td><td class = "zone"></td></tr> 
<tr><td>example2</td><td class = "zone"></td></tr> 

</table> 
</div> 


</body> 
</html> 
+0

究竟什麼是行不通的?首先你需要什麼? (我很困惑這是可能的) –

+0

這一行:'value [i] = frames [i] .isTrustedIE()'。 'frames []'是文檔中「窗口」對象的集合。這些集合的成員沒有名爲'isTrustedIE()'的屬性,所以你的腳本會拋出一個異常。 – Teemu

+0

我沒有得到任何安全區域的結果,所以他不顯示任何文本(可信/不可信)。這首先應該迭代iFrames。使用命令frames [i] .isTrustedIE()應該檢查當前URL的安全區域。我不知道這個命令是否正確,在這個聲明中我不確定;)。 – user1860908

回答

0

你可以試試這個:

var test; 
for (var i = 0; i < document.frames.length; i++) { 
    try { 
     test = document.frames[i].document; 
     text[i] = "Trusted (Local Intranet)"; 
    } catch (e) { 
     text[i] = "Untrusted (Internet Zone)"; 
    } 
} 

有了這個代碼,您將不再需要isTrustedIE()可言。

就像我在之前的評論中所說的,frames[]是文檔中「窗口」對象的集合。此代碼只是檢查是否可以得到iframe中的document的引用。當iframe的內容從跨源數據源加載時,這是不可能的。

+0

但是我在哪裏調用函數isTrustedIE()?這是什麼意思:document.frames [n] .document? – user1860908

+0

@ user1860908我編輯了我的答案。我想你可以使用由你自己的'getElementsByClass()'函數產生的節點列表而不是'document.frames []'。在這種情況下,'frame [i] .document'可能會從Intranet幀中返回'undefined',因此使用'frame [i] .contentWindow.document'來代替。 – Teemu

+0

我已經用你的部件編輯了上面的代碼,但不幸的是它沒有顯示出所需的結果! :(。 – user1860908