【问题标题】:Overriding window = onload覆盖窗口 = onload
【发布时间】:2011-10-31 14:10:30
【问题描述】:

我在 wordpress 中有一个页面,我想通过用户角色插件进行密码保护。在直接页面上一切正常,但我有一个带有 window.onload = function() { 的页面,它完全覆盖了密码功能。

我希望页面在检查用户是否登录后立即加载。

更新:

我正在使用this plugin,我只有这个功能:

<script type="text/javascript"> 
(function() { 

window.onload = function() { 
 var map = new google.maps.Map(document.getElementById('map'), options);
...
} } )
</script>

然后加载到这个 div 上:

<div id="map" style="width:100%; height:100%"></div>

【问题讨论】:

  • 您是否在 onload 的 Javascript 中检查密码?如果是这样,那么绕过它是非常微不足道的。
  • 如果您的密码可以通过页面上的 javascript 覆盖,那么用户所要做的就是关闭 javascript 来查看页面吗?
  • @AndrewMarshall 不,它正在通过与加载内容无关的插件检查密码。
  • 这里没有足够的细节。代码?
  • @toby 我已经更新了我的问题。

标签: php javascript wordpress


【解决方案1】:

您必须使用addEventListenerattachEvent 来加载多个函数。如果您想使用window.onload = ..,请在下面的函数中使用最后一个else 块中的代码:

function addEvent(name, func) {
    if (window.addEventListener) {
        window.addEventListener(name, func, true);
    } else if(window.attachEvent) {
        window.attachEvent('on' + name, func);
    } else {
        var other_func = typeof window['on'+name] == "function" ? window['on'+name] : function(){};
        window['on' + name] = function(ev){
            func(ev);
            other_func(ev);
        }
    }
}

addEvent('load', function(){
   //Load function 
});

【讨论】:

    【解决方案2】:

    不要将其直接分配给onload 属性,而是将其添加为事件侦听器

    https://developer.mozilla.org/en/DOM/element.addEventListener

    对于 IE 版本 attachEvent。

    http://msdn.microsoft.com/en-us/library/ms536343(v=vs.85).aspx

    如果您使用的是 jQuery 或 Prototype 等框架,则可以将其抽象出来,因此您无需担心不同的浏览器。

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多