我試圖用adobeEdge創建兩個橫幅,並在第三個文件中使用iframe導入它們。所以結構會是這樣的:Adobe Edge HTML5本地連接
banner1.html
banner2.html
的index.html(其中banner1和banner2將通過IFRAME被嵌入)。
這兩個橫幅會動畫,但文件大小,每個的加載時間可能會有所不同,所以他們不會在同一時間加載。
問題是我需要它們都在同一時間開始播放(在稱爲本地連接的Flash中),因此我們的想法是檢查兩個iframe是否都已加載,以及它們是否都將DONE消息發送給另一個我會玩他們。
我寫了一個代碼,實際上工作,但仍然一個橫幅總是有延遲。這裏是我的代碼:
橫幅1
<script type="text/javascript">
var fr = window.parent.frames["frame2"];
var frwin = fr.contentWindow;
var otherLoaded = false;
var selfLoaded = false;
var process = setInterval(function(){load();},10);
window.addEventListener("message", receiveMessage, false);
function setLoaded(){
selfLoaded = true;
frwin.postMessage("Done", "DOMAIN");
}
function load(){
if(otherLoaded === true && selfLoaded === true){
clearInterval(process);
AdobeEdge.bootstrapCallback(function(compId) {
AdobeEdge.getComposition(compId).getStage().play();
});
}else if(selfLoaded === true && otherLoaded !== true){
frwin.postMessage("resend", "http://izorgor.com");
}
}
function receiveMessage(event) {
if (event.origin !== "DOMAIN")
return;
if(event.data === 'Done'){
otherLoaded = true;
console.log("Done");
}
if(event.data === 'resend'){
fr = window.parent.frames["frame2"];
frwin = fr.contentWindow;
frwin.postMessage("Done", "DOMAIN");
console.log("resend");
}
}
</script>
橫幅2
<script type="text/javascript">
var fr = window.parent.frames["frame1"];
var frwin = fr.contentWindow;
var otherLoaded = false;
var selfLoaded = false;
var process = setInterval(function(){load();},10);
window.addEventListener("message", receiveMessage, false);
function setLoaded(){
selfLoaded = true;
frwin.postMessage("Done", "DOMAIN");
}
function load(){
if(otherLoaded === true && selfLoaded === true){
clearInterval(process);
AdobeEdge.bootstrapCallback(function(compId) {
AdobeEdge.getComposition(compId).getStage().play();
});
}else if(selfLoaded === true && otherLoaded !== true){
frwin.postMessage("resend", "http://izorgor.com");
}
}
function receiveMessage(event) {
if (event.origin !== "DOMAIN")
return;
if(event.data === 'Done'){
otherLoaded = true;
console.log("Done");
}
if(event.data === 'resend'){
fr = window.parent.frames["frame1"];
frwin = fr.contentWindow;
frwin.postMessage("Done", "DOMAIN");
console.log("resend");
}
}
</script>
的index.html
<iframe width="900" height="200" id="frame1" src="banner1.html" frameborder="0" scrolling="no"></iframe>
感謝
AdServer的服務壁紙橫幅作爲兩個不同的內聯框架。我的第一個想法是在這兩者之間交換postMessage(我的腳本在上面)。但是由於某種原因,當我在這兩種格式之間轉換某個對象時,我發現他們並不是在同一時間開始的。 感謝這個腳本我會試一試 – izorgor