相关疑难解决方法(0)

没有jQuery的$(document).ready等价

我有一个使用的脚本$(document).ready,但它不使用jQuery中的任何其他内容.我想通过删除jQuery依赖项来减轻它.

如何在$(document).ready不使用jQuery的情况下实现自己的功能?我知道使用window.onload不会是相同的,因为window.onload在加载了所有图像,帧等之后的火灾.

javascript jquery

1925
推荐指数
19
解决办法
98万
查看次数

附加事件侦听器的方法,由所有主要Web浏览器支持

我需要编写一段代码,将一个监听器附加到选定的事件,并且可以在任何流行的浏览器中,在任何版本的浏览器中使用.做了一些搜索后,我出来了以下功能:

function addListener(event, thefunction)
{
    if(window.addEventListener)
    {
        //All browsers, except IE before version 9.
        window.addEventListener(event, thefunction, false);
    } 
    else if(window.attachEvent)
    {
        //IE before version 9.
        window.attachEvent(event, thefunction);
    }
}
Run Code Online (Sandbox Code Playgroud)

很简单,似乎是不言自明的.

DOMContentLoaded事件可能存在一些问题,因为IE(AFAIK)的任何版本都没有识别它,开发人员有义务使用它onreadystatechange.解决这个问题似乎也很简单,直到Internet Explorer 9.你只需要写一个额外的行else if(window.attachEvent):

event = (event == 'DOMContentLoaded') ? 'onreadystatechange' : "on" + event;
Run Code Online (Sandbox Code Playgroud)

这部分总是在任何版本的Internet Explorer中触发,这一行提供了事件名称的简单转换,因此总是使用正确的一个.

但是Internet Explorer 9(及以上版本)呢?其中微软决定attachEvent支持它addEventListener.但是没有onreadystatechange变成DOMContentLoaded.

我不能window.addEventListener部分地使用上面的行,因为即使对于其他浏览器,它也会重写DOMContentLoadedonreadystatechange事件,并且在那里失败,因为它们使用DOMContentLoaded.

因此,没有解决这个问题的唯一办法,就是浏览器检测(类型和版本)增加window.addEventListener部分,如果它检测到脚本处理IE 9或以上,它将从改写事件名称DOMContentLoadedonreadystatechange(和补充其他活动名称with …

javascript jquery internet-explorer javascript-events

5
推荐指数
2
解决办法
1万
查看次数