Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript postMessage函数不适用于window.onload?_Javascript - Fatal编程技术网

Javascript postMessage函数不适用于window.onload?

Javascript postMessage函数不适用于window.onload?,javascript,Javascript,好的,这是设置。我有一个可扩展的横幅,它将较小的初始横幅的HTML替换为较大的扩展横幅。(在这个测试中,它的宽度从160px扩展到600px。)我还有第二个HTML页面跳转到我导出的Turult Hype(一个HTML 5动画程序)文件中的特定场景 功能 “postToHype()” 使用postMessage传递到第二个HTML文档HypeExample,告诉它打开到文档的第二个场景。从理论上讲,广告不仅会扩展并加载第二个HTML文档,还会跳转到该文档中的第二个场景 这是为我工作;当我将鼠标移

好的,这是设置。我有一个可扩展的横幅,它将较小的初始横幅的HTML替换为较大的扩展横幅。(在这个测试中,它的宽度从160px扩展到600px。)我还有第二个HTML页面跳转到我导出的Turult Hype(一个HTML 5动画程序)文件中的特定场景

功能

“postToHype()”

使用postMessage传递到第二个HTML文档HypeExample,告诉它打开到文档的第二个场景。从理论上讲,广告不仅会扩展并加载第二个HTML文档,还会跳转到该文档中的第二个场景

这是为我工作;当我将鼠标移到广告上时,它会触发“postToHype()”函数。当我使用一个按钮进行测试时,它也会触发

“合并()”

功能。“combine()”函数也会触发该函数

“自动展开()”

打开广告7秒钟,然后再次关闭

我无法工作的是让window.onload调用“combine();”函数。当window.onload触发“combine()”时,“autoExpand()”有效,但“postToHype()”无效。为什么点击鼠标上的按钮可以使用我的“postToHype()”函数,而“window.onload”不能

这里并没有显示所有的代码(比如linked.js库),但我试图包含最相关的部分。非常感谢您的任何想法

<head>
<script type="text/javascript">
        var exampleHTMLToPage = ExpandableBanners.banner("exampleHTMLToPage", "HypeExample.html", 600, 600);
        exampleHTMLToPage.setCloseImage("images/close.png", 'right', 'bottom');
        exampleHTMLToPage.animated = true;
        exampleHTMLToPage.setDirection('down', 'right'); 
        animated = true;
        exampleHTMLToPage.expandOnClick = false;
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded",function(){documentReady=true;
});}
else if (!window.onload) window.onload = function(){documentReady=true;}
</script>

<script type="text/javascript">
function autoExpand() { 
setTimeout("ExpandableBanners.openAd('exampleHTMLToPage')",0000);
setTimeout("ExpandableBanners.closeAd('exampleHTMLToPage')",7000);
}
</script>

<script> function combine() {
autoExpand();
postToHype();
} </script>

<script>
function postToHype(){
document.getElementById('exampleHTMLToPage_expanded_media').contentWindow.postMessage(['start', 'Scene2'], '*')
}
</script>
</head>

<body>
  <div onmouseover="postToHype()" id="exampleHTMLToPage" style="width:150px; height:600px; background-color:rgb(30,167,221); position:relative; color:white; font-weight:bold">
  <div style="display:inline-block; 
  width:140px; font-size:22px; margin-top:20px; margin-left:5px; margin-right:5px;">This is an HTML banner RK V7. Click to see exported HYPE interactive that loaded inside.</div>
  </div>
<button onclick="combine();">Click me</button>
</body>

<script>
window.onload = function(){
  combine();
};</script>

var exampleThmltopage=ExpandableBanners.banner(“exampleThmltopage”,“HypeExample.html”,600600);
例如htmltopage.setCloseImage(“images/close.png”,“right”,“bottom”);
exampleHTMLToPage.animated=true;
例如htmltopage.setDirection('down','right');
动画=真;
exampleHTMLToPage.expandOnClick=false;
if(文件增补列表器){
addEventListener(“DOMContentLoaded”,function(){documentReady=true;
});}
如果(!window.onload)window.onload=function(){documentReady=true;}
函数autoExpand(){
setTimeout(“ExpandableBanners.openAd('examplethmltopage')”,0000);
setTimeout(“ExpandableBanners.closeAd('exampleThmltopage')”,7000);
}
函数combine(){
自动展开();
后期炒作();
} 
函数postToHype(){
document.getElementById('ExampleHtmlPage_expanded_media').contentWindow.postMessage(['start','Scene2'],'*'))
}
这是一个HTML横幅RK V7。单击以查看加载在内部的导出的HYPE interactive。
点击我
window.onload=函数(){
联合();
};
将其更改为:

<script type="text/javascript">

function autoExpand() { 
  setTimeout("ExpandableBanners.openAd('exampleHTMLToPage')",0000);
  setTimeout("ExpandableBanners.closeAd('exampleHTMLToPage')",7000);
}  

function postToHype(){
  document.getElementById('exampleHTMLToPage_expanded_media').contentWindow.postMessage(['start', 'Scene2'], '*')
}

function combine() {
  autoExpand();
  postToHype();
} 

</script>

函数autoExpand(){
setTimeout(“ExpandableBanners.openAd('examplethmltopage')”,0000);
setTimeout(“ExpandableBanners.closeAd('exampleThmltopage')”,7000);
}  
函数postToHype(){
document.getElementById('ExampleHtmlPage_expanded_media').contentWindow.postMessage(['start','Scene2'],'*'))
}
函数combine(){
自动展开();
后期炒作();
} 

在调用函数postToHype()之前,需要先定义它。最好只使用一个脚本标记并在其中编写所有代码。

什么是
postMessage
的目标上下文?
iframe
元素?这是因为您调用了一个尚未加载的函数。尝试在postToHype()下编写Combine()@Zorken17-我想你把定义函数和调用函数混淆了。@Quentin谢谢这是我要找的词。@Chirpie
window.onload
是指当前的
窗口,而不是
窗口
DOMContentLoaded
引用的是当前的
文档
,而不是
文档
。尝试调用
postMessage
onload
事件句柄中的
postMessage
元素我找不到在它存在之前尝试调用
postToHype
的任何地方,因此虽然这会使代码更整洁,但我看不出有任何区别。window.onload调用combine()witch调用postToHype()。如果没有加载(定义)postToHype(),他将得到一个未定义的值,为什么不在窗口的加载事件触发之前加载postToHype?定义postToHype的脚本没有被动态加载。@Quentin是对的。我也有同样的想法,并尝试了这个命令作为我解决问题的一部分。还是没有快乐。我很欣赏这个主意。我同意最好只写一个脚本标签,事实上在某一点上是这样的,但现在这样的情况让我更容易确定我的问题。答案是创建的iframe的内容没有被跳转到,因为它还没有加载。我需要让postToHype的函数检查要加载的内部内容。再次感谢大家。