0

私はかなり嫌な問題を抱えています。Webページ全体を完全に制御できないため、成功への道をハックする必要があるため、「うんざり」します。

状況

Web ページに読み込まれる独自のスクリプトと、ページのdivナビゲーションを表示するコンテナーがあります。そのコンテナにリンクを追加したいのですが、そのコンテナにはその単一のリンクのみを含める必要があります。

問題

そのコンテナへのリンクも追加するサードパーティのスクリプトがあります。AJAXコールバック関数内でそれを行います

私が試したこと

1. ドキュメントが完全にロードされた後、私のリンク以外のすべてのリンクを削除する

これは、サード パーティのスクリプトが AJAX コールバックを介してコンテンツを読み込むため、不可能です。そのため、ページが完全に読み込まれたときに、不要なリンクがまだレンダリングされていません。

2.divコンテナの名前変更

コンテナにリンクを追加した後、クラス名や ID などを削除して、コンテナを完全に削除しました。しかし、サードパーティのスクリプトはまだそのコンテナを見つけています。

3.DOMNodeInsertedコンテナへのイベントの添付

私がブラウザと呼んでいるものは何でもうまく機能します。しかし、IEでは失敗します。そして IE は、そのページのユーザーが使用するメインのブラウザーです。

他に何を試すことができますか?

4

3 に答える 3

1

DOMSubtreeModifiedイベントをリッスンし、元のdiv状態を復元できます。

var originalChildren = $('#content').children();

var setOriginal = function(e) {
    $('#content').off('DOMSubtreeModified');
    $('#content').empty().append(originalChildren);
    $('#content').on('DOMSubtreeModified', setOriginal);
};

$('#content').on('DOMSubtreeModified', setOriginal);

それをテストします。

于 2013-02-15T13:19:54.733 に答える
1

サードパーティのスクリプトがjQueryを使用している場合は、ajaxComplete()を試すことができます。

于 2013-02-15T12:59:31.210 に答える
0

他のスクリプトがappendChild()などの要素を追加するために使用しているDOMメソッドをオーバーライド/ラップすることができます。このようなもの(擬似コード)

var originalAppend = document.appendChild;
document.appendChild = function () {
    if condition {
        originalAppend.apply(document, arguments);
    }
}
于 2013-02-15T13:00:56.087 に答える