代码之家  ›  专栏  ›  技术社区  ›  Sam Becker

如果javascript被关闭或禁用,允许浏览器返回链接的最佳方法是什么?

  •  2
  • Sam Becker  · 技术社区  · 15 年前

    我想在列表中添加一些Ajax排序选项。由于我的网站目前还没有运行javascript,所以我想让它为那些关闭它的用户、旧的/移动浏览器或noscript运行。

    如果启用了javascript,我如何在单击一个链接时运行一个javascript块,如果没有,则让该链接将浏览器指向一个新页面。我想避开那些刺耳的noscript标签。

    5 回复  |  直到 15 年前
        1
  •  7
  •   Christian C. Salvadó    15 年前

    您的链接需要指向其他非javascript页面的有效href值,在单击事件中,您需要返回false,以避免启用了javascript的浏览器跟踪链接:

    <a id="aboutLink" href="about-us.html">About Us</a>
    

    $('#aboutLink').click(function () {
       // ajax content retrieval here...
       return false; // stop the link action...
    });
    
        2
  •  5
  •   karim79    15 年前

    我会用 preventDefault :

    $('a').click(function(e) {
        e.preventDefault();  //stop the browser from following
        $('#someDiv').load('content.php');
    });
    
    <a href="no-script.html">Load content</a>
    

    如果没有javascript,将遵循href。

        3
  •  2
  •   tw39124    15 年前

    我想您可以将新页面的URL放在href中,并从onclick事件处理程序返回false,以阻止获取链接。如果没有启用JS,那么onclick将不会运行,这意味着将遵循href。

        4
  •  2
  •   T.J. Crowder    15 年前

    为了更好地分离关注点,最好的选择是使用AttachEvent(IE)或AddEventListener(标准)(或一个工具包,可以从原型、jquery、mootools、yui、glow等工具中隐藏它),然后从javascript中取消事件。假设此链接:

    <a href='foo' id='mylink'>Link text</a>
    

    …下面是一个使用原型的示例:

    // Hook up your handler on page load
    document.observe("dom:loaded", function() {
        // Look up the link, apply your handler
        $('mylink').observe('click', yourHandler);
    });
    
    // Your handler:
    function yourHandler(event) {
        // Prevent the default action
        event.stop();
    
        // ...your code here...
    }
    

    您不必为链接指定一个ID,有很多方法可以找到除ID之外的DOM元素,但它是一个方便的示例。

    jquery等人将拥有自己的event.stop()版本,但归根结底是取消事件。

        5
  •  0
  •   Mike    15 年前

    我只需在没有javascript的情况下按原样写下HTML,然后在启用了javascript的情况下修改内容。

    在启用JS的情况下,站点的加载速度可能会慢一点,并且在构建过程中可能看起来有点奇怪,但功能仍然存在。 如果禁用JS,则该站点将保持原样,并且非JS用户仍可以访问。