0

javascript で document.location プロパティへの参照を作成できますか。ここ数日から、document.createElement で作成されたフックに取り組んでいます。これを使用している間、document.location、document.scripts などのオブジェクトにフックを作成できるかどうか疑問に思いました。

var dbi = document.body.innerHTML; 
document.body.innerHTML=function () { 
    var elem = dbi.apply (document, arguments); 
    console.log(arguments); 
}
4

1 に答える 1

3

あなたのコードで:

> var dbi = document.body.innerHTML;

innerHTMLは値が文字列のプロパティであるため、dbi に割り当てられる値は文字列プリミティブです。

> document.body.innerHTML=function () {

body 要素はホスト オブジェクトです。関連する標準によれば、文字列である必要があるプロパティに関数オブジェクトを割り当てることができると信じる理由はありません。一部の環境では可能かもしれませんが、依存することはできず、使用中の少なくとも一部のブラウザーでは失敗します。

>     var elem = dbi.apply (document, arguments);

dbiは文字列プリミティブで、apply メソッドはありません。

>     console.log(arguments);
> }

編集

ES5では、 getterを定義できます。

var o = {   
  get pageURI () {   
    return document.location.href;   
  }
} 

あなたができるように:

alert(o.pageURI);

document.location = document.location.href + '#foo';

alert(o.pageURI);  // current URI with #foo appended

しかし、一般的な Web で ES5 に依存するべきではありません。多くのブラウザーはまだ完全にサポートしていません。

于 2012-04-18T06:15:45.140 に答える