2011-08-29 21 views
0

我最近发现了一种优雅简单的方式来显示一条消息,如果代理已禁用JavaScript,并且它的效果很好 - 在我的笔记本电脑上。试图让替代无脚本工作;罚款,但不是在移动浏览器?

我在移动Safari浏览器上测试过它,它不工作。有什么理由不这样做?写我的代码时,我考虑到了这些东西:

  1. 的标记/ DOM实际加载/注册,所以我把一个脚本标签我的div
  2. 任何类型的原因的结束标记之后为什么不该”将不起作用向右走,所以我利用了setTimeout函数的,把它等待100毫秒
  3. 使用jQuery的只是柜面好老DOM查找和类型修改的东西没有执行,以及/正确

我代码:

<div id="enable-js"> 
     <div id="content-container"> 
      <div id="text_wrapper"> 
       <p>For the best experience, please <a href="http://www.activatejavascript.org/">enable 
        javascript</a>. 
        If your browser is not capable of using javascript, 
        please considering getting a <a href="http://alternativebrowseralliance.com/browsers.html">better 
         browser</a>. 
       </p> 
      </div> 
     </div> 
    </div> 
    <script type="text/javascript"> 
     (function() { 
      setTimeout(function() { 
       $('#enable-js').hide(); //hide area if scripts enabled 
      }, 100); 
     })(); 
    </script> 

在此先感谢,伙计们。

编辑:

我确认问题不在Webkit中;以及事实上它不会以自我调用的匿名函数启动它,或者将隐藏代码放在window.onload中,而不是在div的结束标记之后。

EDIT2:

证实,这样做的document.getElementById并设置显示为none没有任何工作!这是怎么回事...

+0

为什么不'

+0

noscript使得在严格的文档类型下有时难以验证;只是提供一个无脚本消息并放入一个脚本来隐藏它是更有意义的。如果启用了脚本,它将有效地隐藏该消息。 – ffs82defxp

回答

0

尝试使用load()事件,如果这不起作用$(document).ready()几乎肯定会做你想做的。

你应该尝试在你的计算机上使用webkit浏览器,看看它是不是一个webkit问题。

+0

我刚刚确认问题不在webkit中。这个想法在完成加载后立即隐藏div,而不是整个文档,以便用户看不到任何闪烁,或者更糟糕的是,认为页面中存在一个小故障。 – ffs82defxp

+0

我刚试过把它放在onload下,无济于事。 – ffs82defxp

+0

ready()怎么样?我可以建议的最后一件事情就是不使用hide()尝试应用“display:none”或“visibility:hidden”并检查样式表可能它是移动webkit中的一个错误 – Shedokan

0

编辑:全新的想法。

这可能是移动Safari不支持桌面jQuery。

你可以试试jQuery手机。或者这个:

(function() { 
     setTimeout(function() { 
      $('#enable-js').css({'display':'none'}); //hide area if scripts enabled 
     }, 100); 
    })(); 
+0

不,我刚刚测试过,没有区别。 – ffs82defxp

+0

这只是一个自我调用的匿名函数,非常适合清理范围等。 – ffs82defxp

+0

不,我害怕你再犯错。我只是测试.css以及只是简单地做document.getElementById('enable-js')。style.display ='none';它仍然没有工作。 – ffs82defxp

相关问题