私は、元の開発者が標準外の属性を持つ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にこれらの属性を入力しないように指示する方法はありますか? それらの存在は、レガシーコードに大混乱をもたらしています。PrototypeJS のノードmatch
とup
ノードは、これらのブール オブジェクト属性を一致として扱いますが、私が扱っているコードは、translate という名前の属性を持つ DOM ノードを特に探しています。のようなメソッドを使用するように古い Javascript を書き直す必要のない、私の問題の解決策を見つけたいと思いますhasAttribute
。
この記事にmeta
記載されている属性を (勝手な推測で) 追加してみました。
<meta name=”google” value=”notranslate”>
<meta name=”google” content=”notranslate”>
ただし、ページ内のノードにはまだブール値のtrue
translate 属性があります。
(問題があれば、これは私がここで話している Magento のインライン翻訳システムです)