2011-12-06 40 views
0

我有文檔中有兩個I幀movie.htm獲取價值的iframe

<iframe id='movies' class='top' frameborder='0'></iframe> 

<iframe src="moviesearch.htm" class="bottom" frameborder="0"> 

moviesearch.htm有一個輸入標籤

<input id="search_str" type="text"> 

我想知道我怎麼接受使用文檔movie.htm中的JavaScript,使用此值(包含在moviesearch.htm中)。

隨着用戶連續輸入該字段,需要在movie.htm內實時更新該值。

我如何在JavaScript中實現這一點?

回答

0

postMessage。 https://developer.mozilla.org/en/DOM/window.postMessage

movie.htm:

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
Current value:<div id="updatedvalue"></div> 
<iframe src="moviesearch.htm"></iframe> 

</body> 
<script> 
window.addEventListener 
    ("message", function(e) { 
    document.getElementById("updatedvalue").innerHTML = e.data; 
    }, true); 


</script> 
</html> 

moviesearch.htm:

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
<input type="text" onkeyup="sendMessage(this.value)"> 
</body> 
<script> 
function sendMessage(message) { 
    window.parent.postMessage(message, "*"); 
} 
</script> 
</html> 
+0

這不是一個[安全風險](https://developer.mozilla.org/en/DOM/window.postMessage#Security_concerns)嗎?任何人都可以(隱藏)加載movie.htm併發布帶有XSS攻擊的消息?!不要使用innerHTML,特別是如果你嘗試使用HTML5 :) – Bergi

+0

是的,爲了示例,我沒有掃描本地域(因此'*')。不過,您需要出於安全原因。 –