点击行为 - IE 和 FF 的区别?

发布于 2024-08-26 17:14:29 字数 543 浏览 9 评论 0原文

我刚刚得出的结论是,我目前正在进行的一个项目可能在功能上存在“逻辑”错误。

目前我正在使用 PHP/MySQL 和 JQuery 服务器技术。 在页面内有一个带有标签的普通链接引用

<a href="contentpage?page=xxx">next step</a>

现在的痛点似乎是同一元素上给定的 jquery 单击事件。其目的是使用 php session 命令通过另一个 php 脚本保存页面的(当前)内容(-> 表单元素)。 无论出于何种原因,IE 都可以在执行标准 html 命令之前处理 Jquery 的单击事件,从而使用新的页面参数重新加载当前页面。通过使用 FF,行为会有所不同。我假设,FF 首先执行 html 命令,然后执行处理单击事件的 javascript 代码。因此这里的结果集是错误的,分别为空。

我现在的问题是你是否有同样的经历以及你如何处理/解决这个问题。

如果您提供任何建议或进一步的反馈,我将不胜感激。也许您还有一个关于如何重新思考当前架构的解决方案。

问候, 奥利弗

i just came to the conclusion that a project i am currently working on might have a "logical" error in functionality.

Currently I'am using server technology with PHP/MySQL and JQuery.
Within the page there's a normal link reference with tag

<a href="contentpage?page=xxx">next step</a>

The pain point now seems to be the given jquery click event on the same element. The intension was to save the (current) content of the page (-> form elements) via another php script using the php session command.
For any reason, IE can handle the click event of Jquery right before executing the standard html command, that reloads the current page again with the new page parameter. By using FF the behaviour is different. I assume, that FF first execute the html command and afterwards execute the javascript code which handles the click event. Therefore the resultset here is wrong respectivly empty.

My question now is whether you made the same experience and how you handled / wordarrounded this problem.

I'd be thankful fur any of your tips or further feedback. Maybe you also have a solution on how to rethink about the current architecture.

Regards,
Oliver

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唠甜嗑 2024-09-02 17:14:29

实际上,firefox 会在超链接执行重定向操作之前引发事件并执行附加到该事件的命令,可能在执行命令时发生错误,IE 允许它完成其操作,而 firefox 抛出错误,jQuery 函数块处理它您不会注意到抛出了异常。
使用经典的 onclick 事件制作一个测试按钮并测试您的功能,看看它是否可以在 Firefox 中工作

actually firefox do raise the event and execute the command that is attached to it before the hyperlink takes the redirecting action, maybe an error happened while executing the command and IE allowed it to complete its action while firefox throw an error and jQuery function block handled it which you will not notice an exception was thrown.
make a test button with classical onclick event and test your function and see if it is working probably in firefox

纵性 2024-09-02 17:14:29

如果我理解正确的话,您正在为链接分配一个 click 事件,将 href 保留在适当的位置并准备好触发。这是非常不明智的,因为当用户单击链接时,click 事件中的任何 javascript 执行的剩余时间都是有限的,并且是任意的。不同的浏览器很可能会以不同的方式处理这个问题——无论如何,这是错误的方法。您永远无法确定您的操作是否得到充分执行。

通常的方法是让 click 事件返回 false,防止链接的默认操作触发,并执行轻松的 location.href = this。当一切都完成后。

如果您使用 Ajax 发送一些数据,请将 location.href 部分放入 Ajax 调用的 success 回调中。这样,您就可以 100% 确定数据已发送。

If I understand you correctly, you are assigning a click event to the link, leaving the href in place and ready to fire. That is very unwise, as the time left for any javascript in the click event to execute when the user clicks the link is limited, and arbitrary. It can well be that different browsers handle this differently - anyway, it's the wrong approach. You can never be sure your actions get executed in full.

The usual approach would be to have the click event return false, preventing the default action of the link to fire, and do a relaxed location.href = this.href when everything is done.

If you are using Ajax to send away some data, then put the location.href part into the success callback of your Ajax call. That way, you can be 100% sure the data gets sent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文