postMessage函数不能与window.onload一起使用?

时间:2016-04-22 20:08:45

标签: javascript

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

功能

  

“postToHype()”

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

这对我有用;当鼠标悬停在广告上时,它会触发“postToHype()”功能。当我使用也触发

的按钮进行测试时,这也有效
  

“结合()”

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

  

“自动扩展()”

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

我无法工作的是window.onload调用“combine();”功能。当window.onload触发“combine()”时,“autoExpand()”有效,但“postToHype()”没有。为什么按钮单击和onmouseover与我的“postToHype()”函数一起使用,但“window.onload”不起作用?

此处并未显示所有代码(例如链接的.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>

1 个答案:

答案 0 :(得分:-1)

改变它:

<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>

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