2016-12-20 236 views
0

我试图动态预先加载文件的列表,这些文件可能是图像和JavaScript文件之间的任何东西。所有事情都会随着Chrome和Firefox而超越,但是当我尝试使用Edge预加载JavaScript文件时会失败。边缘仍然可以处理图像,但没有js文件。是的,我用addEventListener尝试过,它也不起作用。object.onload失败,IE浏览器和边缘

Edge不会给我任何错误。

var object = {}; 
    object = document.createElement('object'); 
    object.width = object.height = 0; 
    object.data = path/to/javascriptfile.js 
    body.appendChild(object); 

    object.onload = function(){ 
     console.log('hello world') 
     //not firing with edge 
    } 

任何相关我失踪了?

更新:一天后没有得到任何成功。现在可能会离开它,只是边跳边预加载脚本文件,直到找到解决方案。

+0

的可能的复制[是否有一个跨浏览器的标准载事件HTML的“对象”的标签?(http://stackoverflow.com/questions/7756353/is-there-一个跨浏览器标准的加载事件的htmls对象标签) –

回答

1

也许值得一检查 - 从MSDN:

客户端负载的应用,嵌入对象和图像只要 它解析过程中遇到的小程序,嵌入和img对象。 因此,这些对象的onload事件发生在 客户端解析任何后续对象之前。为确保事件处理程序 接收到这些对象的onload事件,请将定义事件处理程序的脚本对象 放置在对象之前,并使用对象中的onload 属性设置处理程序。

https://msdn.microsoft.com/en-us/library/windows/apps/hh465984.aspx

编辑,澄清:

你应该重视事件侦听器的元素被添加到页面之前。

即使这样做,我不知道它是否会工作或不。但是,为了确保您已经用尽所有选项尝试下面的例子:

function doLoad() { 
    console.log('The load event is executing'); 
} 

var object = {}; 
object = document.createElement('object'); 
object.width = object.height = 0; 
object.data = 'path/to/javascriptfile.js'; 

object.onreadystatechange = function() { 
    if (object.readyState === 'loaded' || object.readyState === 'complete') doLoad(); 
    console.log('onreadystatechange'); 
} 

if (object.addEventListener) { 
    object.addEventListener("load", doLoad, false); 
    console.log('addEventListener'); 
} 
else 
{ 
    if (object.attachEvent) { 
     object.attachEvent("onload", doLoad); 
     console.log('attachEvent'); 
    } else if (object.onLoad) { 
     object.onload = doLoad; 
     console.log('onload'); 
    } 
} 

var body = document.getElementsByTagName("body")[0];  
body.appendChild(object); 

如果这不起作用,你也许可以使用前负荷“形象”,而不是“对象”在IE:https://stackoverflow.com/a/11103087/1996783

+0

不幸的是,在这一刻,我完全死了,或者我只是傻,但不能让它与给定的信息工作。我会继续寻找,但可能需要为边缘做出完整的解决方案。最起码到现在。 – eljuko

+0

@eljuko我已经添加了一个例子。不知道它是否会起作用,但穿过我的手指 – Mackan

+0

感谢您付出努力。将尝试这一点,并告知我完成后。 – eljuko

0

工作临时解决方案是将onload事件直接放入脚本元素而不是对象。这很让人伤心,因为它像Chrome & FF中的魅力一样工作。

事实证明,与css源object.data也没有加载。我不知道这是否是一个错误,因为它仍然可以从object.data加载图像。

但显示必须继续。

干杯,eljuko

相关问题