在 HTML 定位点中指定“语言”属性是否会更改事件行为

Does specifying 'language' attribute in HTML anchor changes events behavior?

本文关键字:是否 属性 事件 语言 定位 HTML      更新时间:2023-09-26

我的网站上有以下JS代码:

function foo(link) {
    alert('ID=' + link.DocumentID + '; Lang=' + link.Language);
}

每次单击以下链接时都应调用:

<a href='http://www.example.com' DocumentID='someDocId' Language='en' onclick='foo(this);'>Example page</a>

(这只是我实际代码的简化版本,但它的工作方式完全相同;我需要一些非标准属性,例如用于跟踪目的的DocumentIDLanguage)。

问题是foo()函数不会在单击事件时触发。当我将Language属性名称更改为即 Lng功能一切正常。我已经在IE7/8和FF(最新版本)上对其进行了测试。

根据 W3C HTML4 标准Language属性对锚标记无效。我知道它对<script>标签有效,但我没有看到任何关系。

有谁知道为什么设置 Language 属性会阻止触发onclick事件(我没有尝试过其他事件类型,但它们也可能受到影响)?

只有 IE 7/8 同步自定义属性和属性。

link.href; // 'http://www.example.com'
link.language; // undefined (except in IE 7/8)
最好

使用 getAttribute

link.getAttribute('href'); // 'http://www.example.com'
link.getAttribute('language'); // 'en'

属性在 HTML 中不区分大小写,在 XML 文档(包括 XHTML)中区分大小写。

不要将 HTMLScriptElement 上已弃用的语言属性与 HTMLElement 上的 lang 属性混淆。

附言就像有人已经说过的,最好使用 HTML5 data-* 属性

如果要指定链接的语言,改用此属性怎么样?

http://www.w3.org/TR/html401/struct/links.html#adef-hreflang