我跟着其他人都說過讓別人去做,但我得到了「空」或「未定義」。從iFrame獲取元素返回Null/undefined?
var frame=win.getElementsByTagName("iframe")[0];
var innerDoc = (frame.contentDocument)
? frame.contentDocument
: frame.contentWindow.document;
alert(innerDoc.getElementById("input"));
我跟着其他人都說過讓別人去做,但我得到了「空」或「未定義」。從iFrame獲取元素返回Null/undefined?
var frame=win.getElementsByTagName("iframe")[0];
var innerDoc = (frame.contentDocument)
? frame.contentDocument
: frame.contentWindow.document;
alert(innerDoc.getElementById("input"));
試試這個例子
<html>
<head>
<title>Iframe Test</title>
<script type="text/javascript">
window.onload= function(){
var frame=document.getElementsByTagName("iframe")[0];
var innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
alert(innerDoc.getElementById("input"));
}
</script>
</head>
<body>
<div>
<iframe src="test.htm" />
</div>
</body>
</html>
而且TEST.HTM
<html>
<head>
<title>A test Page</title>
</head>
<body>
<div id="input">
</div>
</body>
</html>
的它的工作在我的本地機器的來源。
我正在爲特定的瀏覽器工作,所以不用擔心它是contentWindow還是contentDocument。 您的腳本使我的整個頁面由於某種原因無法使用。語法錯誤我似乎無法找到。 但是!當我簡單地這樣做: var frame = win.getElementsByTagName(「iframe」)[0]; var innerDoc = frame.contentDocument; alert(innerDoc); 該腳本提醒「Object HTMLDocument」。這告訴我,這是正確的,不是? 我想真正的問題是:如果它說這是一個HTMLDocument對象,我應該直接在innerDoc後放置什麼?我是否打算將「.document.whatever」或者「.whatever」放在一起? – RickyAYoder
@RickyAYoder,很抱歉聽到。我已經在IE9和FireFox中嘗試了上面這個,並且完美地工作,即它返回Iframe中的元素。當DOM準備好/未準備好時,您是否調用腳本?如果可能的話,請檢查一下。 – Hoque
你的問題是什麼?你真的有'id =「input」'元素嗎? – Madbreaks
什麼是未定義的? getElementsByTageName,NodeList,frame,innerDoc,getElementById,alert參數? – Bergi
你知道同源策略嗎? – Bergi