我正在使用一些遗留代码,其中原始开发人员大量使用生成具有名为的非标准属性的 HTML DOM 节点translate
<span translate="[{"shown":"My Account","translated":"My Account","original":"My Account","location":"Text","scope":"Mage_Customer"}]">My Account</span>
然后使用 javascript 代码遍历/搜索这些节点,如下所示。
if (!$(target).match('*[translate]')) {
target = target.up('*[translate]');
}
我要解决的问题是,Google Chrome 似乎自动为文档中的每个 DOM 节点添加了一个translate
属性,并且该 DOM 节点的值是 boolean true
。您可以通过从 Chrome 的 javascript 控制台运行以下 Javascript 来查看这一点
> document.getElementsByTagName('p')[0].translate
true
>
有没有办法告诉 Chrome不要填充这些属性?他们的存在对遗留代码造成了严重破坏。PrototypeJSmatch
和up
节点将这些布尔对象属性视为匹配项,而我正在处理的代码专门寻找具有名为 translate 的属性的 DOM 节点。我想为我的问题找到一个解决方案,它不涉及重写旧的 Javascript 以使用hasAttribute
.
我尝试(作为一个疯狂的猜测)添加本文meta
中提到的属性,
<meta name=”google” value=”notranslate”>
<meta name=”google” content=”notranslate”>
但是页面中的节点仍然有一个布尔true
翻译属性。
(如果重要的话,这是我在这里谈论的 Magento 的内联翻译系统)