DOM
任意のJavaScriptが実行されている間、Webサイトをフリーズしたままにする必要があるコードを書いています。属性の変更は問題ありませんが、ページの元のタグ構造を変更することはできません。
DOM
JavaScriptには、 :を変更できる関数の基本数があることを知っています。
appendChild( nodeToAppend )
cloneNode( true|false )
createElement( tagName )
createElemeentNS( namespace, tagName )
createTextNode( textString )
innerHTML
insertBefore( nodeToInsert, nodeToInsertBefore )
removeChild( nodetoRemove )
replacechild( nodeToInsert, nodeToReplace )
私の最初の考えは、これらの関数を操作なしで上書きすることでした。
>>> document.write('<p>Changing your DOM. Mwwhaha!</p>')
>>> document.write = function() {}
>>> document.write('<p>No-op now!</p>')
document
オブジェクトに対してこれを行うのは簡単ですが、DOM
変更関数は多くの異なるJavaScriptオブジェクトから呼び出すことができます。これらの機能をトップレベルで上書きできれば、おそらく機能するでしょうか?
sktrdieからの更新:
>>> HTMLElement.prototype.appendChild = function(){}
>>> $("a").get(0).appendChild(document.createElement("div"))
# Still works argh.
>>> HTMLAnchorElement.prototype.appendChild = function(){}
>>> $("a").get(0).appendChild(document.createElement("div"))
# No-op yeah!
したがって、すべてのDOM
要素のコンストラクターを収集して、それらを実行し、操作を行わないようにすることができたように見えますが、それでもかなり厄介なようです...
DOM
任意のJavaScriptからの変更から保護するにはどうすればよいですか?