2

JavaScript 関数が DOM にアクセスするのを防ぐことができるかどうかは誰にもわかりませんか?

より詳しい情報:

JavaScript 用の「スレッド化」オブジェクトを作成しようとしています。たとえば、Worker オブジェクトを使用し、利用できない場合は setTimeOut にフォールバックします。明らかに、ワーカーは DOM にアクセスできません。この標準を維持したいと思います。

さらに詳しい情報:

1つの可能な、しかし醜い可能な解決策(私が今見つけたもの):

function test(document, window)
{

}

しかし、開発者がこの関数内で呼び出す別の関数から dom にアクセスすることを妨げるものは何もありません。引数の世界をリストする必要があります。

4

3 に答える 3

2

この関数はWebワーカーで実行できます。WebワーカーからDOMにアクセスすることはできません。

しかし、本当に、あなたは何を達成しようとしていますか?

于 2012-12-11T12:01:23.063 に答える
2

あなたの目標は、JavaScript を完全にサンドボックス化することではなく、規則を強制することであるため、ローカルでシャドウ化された および他の DOM インターフェースでwindow関数を実際に使用して、サードパーティのスクリプトを評価することができます。document

(function test(window, self, top, document) {
    'use strict'; 
    eval(untrustedCode);
}());

もちろん、実際のグローバル オブジェクトにアクセスすることはできますが、少なくとも直接アクセスすることはできません。

于 2012-12-11T12:44:37.033 に答える
2

いいえ、それは通常のブラウザ環境では実際には不可能です。

関数を呼び出す前のようなものを置き換えて後で復元できるかもしれませんがdocument.getElementById...しかし、これを回避する方法があると確信しています。

于 2012-12-11T11:59:29.423 に答える