簡體   English   中英

從iframe內的父窗口調用javascript函數,但iframe src來自遠程計算機

[英]Calling javascript function from parent window inside iframe but the iframe src is from remote machine

首先,我的頁面上有這個iframe。

<iframe src="https://192.168.100.87/index.html">
   <p>Browser does not support iframe</p>
</iframe>

我的頁面標題標簽中包含以下腳本。

<head>
   <script type="text/javascript">
       function callMe(){
        alert('called');
       }
   </script>
</head>

而且我有來自遠程計算機的index.html中的以下代碼。

<body>
   <input type="button" value="Click" onClick="window.parent.callMe()" />
</body>

如您所見,我正在調用包含我的iframe的主頁的函數。 但不幸的是我無法調用該函數。

這可能嗎,我在這里想念什么? 謝謝

您無法訪問其他域的屬性或Windows的調用方法。 但是,您可以使用postMessage將消息發送到其他域的框架(請參閱https://developer.mozilla.org/en-US/docs/DOM/window.postMessage )。

嘗試parent.postMessage('testing', '*'); 第一個參數是要發送的數據; 第二個是您要發送到的窗口的域。 使用'*'可以將其發送到任何主機,但是為了提高安全性,您應該使用父級的實際域。

然后在您的父頁面中:

window.addEventListener('message', function(event) {
    if (event.data == 'testing') {
        callMe();
    }
});

這僅在現代瀏覽器中有效。 如果您需要支持較舊的瀏覽器(如IE 7或更舊的瀏覽器),請查找postMessage polyfill。

除非正在運行該機器的代碼也位於192.168.100.87,否則這是不可能的。 您不能從其他來源的頁面訪問任何內容。 參見https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM