Entfernen der "translate" -DOM-Eigenschaft von Chrome
Ich arbeite mit einem Legacy-Code, bei dem die ursprünglichen Entwickler das Generieren von HTML-DOM-Knoten mit einem nicht standardmäßigen Attribut namens intensiv genutzt habentranslate
<span translate="[{"shown":"My Account","translated":"My Account","original":"My Account","location":"Text","scope":"Mage_Customer"}]">My Account</span>
und dann überqueren / suchen nach diesen Knoten mit Javascript-Code wie folgt.
if (!$(target).match('*[translate]')) {
target = target.up('*[translate]');
}
Das Problem, das ich zu lösen versuche, scheint, dass Google Chromeautomatisch fügt eintranslate
Attribut für jeden DOM-Knoten im Dokument und dass der Wert dieses DOM-Knotens ein Boolescher Wert isttrue
. Sie können dies sehen, indem Sie das folgende Javascript in der Javascript-Konsole von Chrome ausführen
> document.getElementsByTagName('p')[0].translate
true
>
Gibt es sowieso Chrome zu erzählennicht diese Attribute ausfüllen? Ihre Anwesenheit verwüstet den Legacy-Code. PrototypeJS'smatch
undup
Knoten behandeln diese booleschen Objektattribute als Übereinstimmungen, während der Code, mit dem ich mich befasse, speziell nach DOM-Knoten mit einem Attribut namens translate sucht. Ich möchte eine Lösung für mein Problem finden, bei der das alte Javascript nicht neu geschrieben werden muss, um Methoden wiehasAttribute
.
Ich habe versucht (als eine wilde Vermutung) das hinzuzufügenmeta
Attribute erwähnt inDieser Beitrag,
<meta name=”google” value=”notranslate”>
<meta name=”google” content=”notranslate”>
Die Knoten auf der Seite haben jedoch immer noch einen Booleschen Werttrue
Attribut übersetzen.
(Wenn es darauf ankommt, ist dies das Inline-Übersetzungssystem von Magento, über das ich hier spreche.)