通过传递相对路径

时间:2016-02-19 16:16:26

标签: javascript iframe postmessage

我有一个包含以下文件的文件夹:

  • 的index.html
  • screens.html
  • code.js
  • 屏幕-code.js
  • 的style.css
  • 屏幕-的style.css

index.html 是包含我的布局的主页面,其中包含iframe src="screens.html"。但是,如果我想从 index.html (已将 code.js 文件添加到 screens.html } postMessage()进行操作strong>(它添加了 screens-code.js )我不能用相对路径做到这一点。我这样做(在主页' s代码.js文件中):

var frame = document.getElementById('innerScreen').contentWindow; // #innerScreen is iframe's ID
var hello = 'Message from screens.html file';
frame.postMessage(hello, frame.url); // or instead of <frame.url> i tried using just <screens.html> as relative path to HTML file

我收到错误:

未捕获的SyntaxError:无法执行&#39; postMessage&#39; on&#39; Window&#39;:目标来源无效&#39;&#39;致电&#39; postMessage&#39;

发生了什么?我将所有文件放在同一个文件夹中,我不是通过服务器运行它(XAMPP的种类)。没有服务器它没有用吗?

screens-code.js 中我只有这个:

window.addEventListener('message', function(event)
{
   console.log('Success?');
}

但除了上述错误之外没有任何事情发生。

-------------------------------------------- -------------------------------

样本 http://plnkr.co/edit/q9Whqt0RfA90UwxQkFDv?p=preview

所以,在控制台中是一个错误 未捕获的TypeError:无法读取属性&#39; contentWindow&#39;为null

[编辑]

这样做有效,因此添加等待iframe加载的EventListener

frame.addEventListener('load', function() 
{
      iframe.postMessage('some testing message', '*');
});

0 个答案:

没有答案