【问题标题】:jQuery click event not working in ChromejQuery 点击事件在 Chrome 中不起作用
【发布时间】:2014-03-15 22:32:23
【问题描述】:

我使用此代码作为一个简单的示例来获取另一个 HTML 文件的内容并将其放入 div 中,每当我单击链接时。它在 Firefox 和 Safari 中运行良好,但在 Chrome、IE 或 Opera 中却不行。

<a class="ajaxLink" href="RS.html">Click to load RS content</a>

<div id="page">
    Initial TEXT - will be substituted with RS when clicking ajaxLink
</div>

<script>
    $(function () {
        $('a.ajaxLink').click(function(e) {
            e.preventDefault();
            $('#page').load($(this).attr('href'));
        });
    });
</script>

在 Chrome、IE 和 Opera 中,每当我单击链接时,什么都不会发生,与 HTML 文件的内容无关。可能是我的代码不兼容?

说实话,我从这里得到了这段代码: Javascript wont load into ajax div

我不完全理解 ($(this).attr('href')); 的工作原理,但知道在 #page 中加载 HTML 应该是正确的。

【问题讨论】:

  • 代码看起来不错。在浏览器的开发工具(例如 Firebug、Dragonfly 等)的网络选项卡中跟踪请求,看看它是否可以正常加载内容。还要检查控制台是否有错误。
  • 也许事件监听器根本没有被注册为锚点。注册正在使用 $(document).ready(function(){$('a.ajaxLink').click(function(e) { e.preventDefault(); $('#page').load($(this) .attr('href')); });});,因为脚本可能在 dom 准备好之前加载。
  • 你很快 :) - 我刚刚在 Chrome 控制台中找到了这个:' OPTIONS file:///G:/WEBSITE/TEST-2014-01/RS.html 没有'访问-Control-Allow-Origin' 标头存在于请求的资源上。因此不允许访问 Origin 'null'。 jquery-1.11.0.min.js:4 XMLHttpRequest 无法加载文件:///G:/WEBSITE/TEST-2014-01 /RS.html。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。 ajax-main.html:1` --- 我不明白
  • 我的硬盘上本地有 2 个涉及的 html 文件,位于同一文件夹中。所以我想知道为什么有些浏览器不允许它,以及我必须在哪里添加一些东西才能访问..

标签: jquery google-chrome click


【解决方案1】:

你的代码没有问题,我的朋友在 mozilla 而不是 chrome 上尝试它,它不会在 chrome 上工作,因为

由于同源策略,您将无法从同一域访问 URL。 由于源(源)页面和目标 URL 位于不同的域中,您的代码实际上是在尝试发出跨域(CORS)请求,而不是普通的 GET 简而言之:对于本地主机并从同一域获取页面,您无法访问该文件

【讨论】:

  • 啊好吧,我不知道这也不适用于本地主机,如果两个文件都在同一个文件夹中:-/ - 那么我如何从现在开始在本地测试我的网站?跨度>
  • 您可以在 mozilla firefox 或任何其他不使用 chrome 引擎的浏览器上测试您的网站 :)
  • hgrmpf.多谢。至少我有一个理由...好吧我也发现了这个here ---似乎不太容易完成
  • 它似乎可以在 browserstack.com 中工作,不过 :) -- 但慢
【解决方案2】:

$(this).attr('href') 只是从锚点中获取 'href' 属性(在本例中为 'RS.html')

您应该通过添加一些断点/console.log 语句来调试您的代码,以找出它在什么时候不起作用(至少应该触发 click 事件),我看不出 Chrome 会有任何不同行为的任何原因。

【讨论】:

  • 谢谢。 Click 似乎终于触发了,因为单击时,Chrome 中的控制台通过返回错误消息来更新自身(请参阅上面的我的 cmets)
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多