2

我想将一些 Ajax 排序选项添加到列表中。由于到目前为止我的网站在没有 JavaScript 的情况下运行,我想让它为关闭它的人、旧/移动浏览器或 noscript 运行。

如果启用了 JavaScript,我如何在单击链接时运行 JavaScript 块,如果未启用,则让该链接将浏览器定向到新页面。我想远离 hacky noscript 标签。

4

5 回答 5

7

您的链接需要指向替代非 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...
});
于 2009-08-19T08:13:47.307 回答
5

我会使用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。

于 2009-08-19T08:17:26.007 回答
2

我想您可以将新页面的 URL 放在 HREF 中,并从 onClick 事件处理程序返回 false 以停止获取链接。如果未启用 JS,则不会运行 onClick,这意味着将遵循 HREF。

于 2009-08-19T08:12:56.937 回答
2

为了很好地分离关注点,最好的办法是使用 attachEvent (IE) 或 addEventListener (standard)(或对您隐藏的工具包,如 Prototype、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 等。al.,将有自己的 event.stop() 版本,但归结为取消事件。

于 2009-08-19T08:16:37.910 回答
0

我会简单地写下没有 JavaScript 时的 HTML,然后修改内容,使其在启用 JavaScript 时的样子。

如果启用了 JS,网站可能会加载得慢一点,并且在构建时可能看起来有点奇怪,但功能仍然存在。如果 JS 被禁用,该站点将保持原样并可供非 JS 用户访问

于 2009-08-19T08:44:57.620 回答