Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 区分内部操作和ajax请求链接的最佳方法?_Javascript_User Interface_Hyperlink_Action - Fatal编程技术网

Javascript 区分内部操作和ajax请求链接的最佳方法?

Javascript 区分内部操作和ajax请求链接的最佳方法?,javascript,user-interface,hyperlink,action,Javascript,User Interface,Hyperlink,Action,因为这个主题是跨学科的(但仍然是关于用户体验的),我很好奇JavaScript开发人员对此有何看法 我的站点处理a标签,标签以href开头,以#作为ajax请求。若请求成功,那个么它将文档哈希更改为appropiate。现在我想实现调用内部js函数的操作链接,比如转到站点顶部,但我不想要javascript:myAction()reference,因为大多数浏览器在链接上方显示带有引用url的提示。也许我可以使用并成功地处理自己的url模式,如action:myAction,但这还不够解决方案-

因为这个主题是跨学科的(但仍然是关于用户体验的),我很好奇JavaScript开发人员对此有何看法

我的站点处理
a
标签,标签以
href
开头,以
#
作为ajax请求。若请求成功,那个么它将文档哈希更改为appropiate。现在我想实现调用内部js函数的操作链接,比如转到站点顶部,但我不想要
javascript:myAction()
reference,因为大多数浏览器在链接上方显示带有引用url的提示。也许我可以使用并成功地处理自己的url模式,如
action:myAction
,但这还不够解决方案-用户仍然被暗示有魔力url。另一个选项是使用自定义属性,如
action=“myAction”
href
作为自定义字符串,例如
href=“Go to top”
,但如何与浏览器兼容?最后一个解决方案是使用样式为链接的
span
执行操作-用户不会被提示任何url,但这是链接功能的一部分,建议执行操作(转到url默认值)

什么更好?为什么?


<script>
if(window.addEventListener)//Chrome, Firefox and Safari
    document.getElementById('myLink').addEventListener('click',function(e){
        var e = e || event;
        e.preventDefault();
        window.location = destiny;
    });
else//IE and Opera
    document.getElementById('myLink').attachEvent('onclick',function(e){
        var e = e || event;
        e.preventDefault();
        window.location = destiny;
    });
</script>
<a href="#" id="myLink">Link</a>
if(window.addEventListener)//Chrome、Firefox和Safari document.getElementById('myLink')。addEventListener('click',函数(e){ var e=e | |事件; e、 预防默认值(); window.location=命运; }); 还有//IE和歌剧 document.getElementById('myLink').attachEvent('onclick',函数(e){ var e=e | |事件; e、 预防默认值(); window.location=命运; });
您应该首先让链接正常工作。这样你就不必担心有人点击
。它工作得很好,而且容易接近。一旦达到这一点,就将JavaScript放在最上面,以增强用户体验。如何将所有这些连接起来取决于您-如果您希望以通用方式处理删除,您可能会有如下链接:

<a href='/customers/2' class='delete'>Delete customer</a>

<a href='/customers/2' data-action='delete'>Delete customer</a>

或者,如果每个链接都是特定的,则可以设置id并以这种方式连接:

<a href='/customers/2' id='delete'>Delete customer</a>


所有这些连接都应该在一个外部JavaScript文件中完成。

我会首先以没有JS的用户可以使用的方式编写所有内容,比如

<a href="#" title="Go to the top of the page">Go to top</a>

然后我会在加载DOM后立即使用JS来增强它。首先添加
onclick
事件,然后删除
href
,以避免任何链接提示(链接以外的任何内容可能不会通过任何验证器),最后添加一个新的样式属性,使光标成为悬停时的指针


这是非常有用的一部分。通过这种方式,我可以获得有效、兼容的代码以及舒适的行为。

我知道如何实现。我问,从用户的角度来看,什么解决方案更好。一个充当常规链接,另一个不充当。如果我能给你-1,因为这不是我想要的。我不明白你为什么要写任何代码……我想这是最好的解决方案。我不使用与服务器相关的链接,因为我的webapp只有一个名为index的html文件(目前是php)。所有数据请求都是通过捕获
a
标签上的链接完成的,标签上的
href
以哈希开头,并由客户端ajax引擎进行翻译和处理。这是严格意义上的JS应用程序。当您悬停一个链接时,浏览器的内置操作会通知您该链接的url。我想要的只是一个很好的解决方案,使用无请求的内部js操作链接和用户友好的浏览器内置提示。如果没有其他方法,也可以不使用。啊哈-当然,使用href first hash处理链接必须保持原样。事件处理的代码不是我的问题。