【发布时间】:2012-10-28 23:02:50
【问题描述】:
我正在处理一些遗留代码,其中原始开发人员大量使用生成具有名为translate 的非标准属性的 HTML DOM 节点
<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 节点的值是布尔值 @ 987654329@。您可以通过从 Chrome 的 javascript 控制台运行以下 Javascript 来查看这一点
> document.getElementsByTagName('p')[0].translate
true
>
有没有办法告诉 Chrome不要 填充这些属性?他们的存在对遗留代码造成了严重破坏。 PrototypeJS 的 match 和 up 节点将这些布尔对象属性视为匹配项,而我正在处理的代码专门寻找具有名为 translate 的属性的 DOM 节点。我想为我的问题找到一个不涉及重写旧 Javascript 以使用 hasAttribute 之类的方法的解决方案。
我尝试(作为一个疯狂的猜测)添加this article 中提到的meta 属性,
<meta name=”google” value=”notranslate”>
<meta name=”google” content=”notranslate”>
但页面中的节点仍然有一个布尔值true translate 属性。
(如果重要的话,我这里说的是 Magento 的内联翻译系统)
【问题讨论】:
-
您是否尝试将
'notranslate'类添加到您想要避免的元素中? support.smartling.com/entries/… -
@B00MER 1. 那将是页面上的每个元素,所以不是。 2. 即使使用 class="notranslate",javascript 节点也存在并设置为 true。
-
有api.jquery.com/prop 和api.jquery.com/attr 这些你能用吗? chrome 似乎没有添加任何属性。也许只是属性。
-
@akonsu 同样,为了回应我的帖子,我关心的不是找到替代导航/测试方法,而是找到一种让 Chrome 像其他浏览器一样工作的方法
标签: javascript html magento google-chrome xpath