正如你可能已經知道(給家長和孩子都在不同的域),你絕對不能從孩子的iFrame可達到父偵聽事件。
解決方法之一是在頁面之間傳遞消息。這將要求你的客戶在他們的頁面中包含額外的javascript以及指向你的服務器的iFrame。這在原生javascript中支持postMessage,但包括@Mark Price建議將使您的生活更輕鬆。
所以這裏去一個例子:
客戶頁數:myserver.com/some_html_page.htm
...
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.postMessage.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#TestButton").click(function(){
jQuery.postMessage("say_hi", "myserver.com/some_html_page.htm");
});
});
</script>
</head>
<input type="button" value="Say Hi" id="TestButton">
<iframe src="myserver.com/some_html_page.htm"></iframe>
代碼:
...
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.postMessage.min.js"></script>
<script type="text/javascript">
// you will need to set this dynamically, perhaps by having your
// clients pass it into the URL of the iFrame,
// e.g. <iframe src="myserver.com/some_html_page.htm?source_url=..
var source_origin = "clients_page.com/index.html";
var messageHandler = function (data) {
// process 'data' to decide what action to take...
alert("Hi");
};
$.receiveMessage(messageHandler, source_origin);
</script>
</head>
也許這將是很好的捆綁客戶端編碼到一個他們可能包含的單個庫中,這樣您的客戶就不會因編寫自己的JavaScript而承受沉重負擔。
作爲一個告誡,我把這段代碼寫在了我的頭上,它可能會充滿錯別字。我之前使用過這個庫來實現類似的目標,我希望這個答案對你來說是一個有用的跳板點(以及plugin documentation)。
讓我知道我是否可以澄清任何事情,並祝你好運! :)
可能重複的[跨域iframe問題](http:// stackoverflow。com/questions/9393532/cross-domain-iframe-issue) – Quentin