08/07/19 02:17:24 S5Cl8gA2
質問の仕方がわかりにくいという指摘があったので、分かりやすく書き直してみました。
【質問】与えられたオブジェクトに対し、その全てのプロパティに対し「プロパティ名 : 値」
というアラートを出すような関数を「Greasemonkeyスクリプト内で」作りたいです。(ただし、プロパティにはメソッドも含む)
試しに、
view = function(o){ for(p in o){alert(p + ': ' + o[p])} }
という関数を作ってみました。
まずこの関数の引数として自分で作ったオブジェクトを与えたところうまく動作しました(下例)。
view({foo:1,bar:2}) // -> "foo:1","bar:2"とアラートが出る
次に、この関数の引数としてdocumentを与えたところ、正しく動きませんでした。
view(document) // -> ページによって出る内容が違う。
例えば、URLリンク(www.google.co.jp)だとアラートが出ません。
URLリンク(www.nicovideo.jp)だと
"_getElementsByXPath: undefined",
"getElementsByClassName: function XPCNativeWrapper function wrapper() {
[native code]
}", "location: URLリンク(www.nicovideo.jp)"
という三つのアラートが出ます。
documentにはbodyというプロパティがあると理解していますが、それが出てこないのが不思議です。
当たり前ですが、試しに、ロケーションバーで
javascript: var view = function(o){for(p in o){alert(p + ': ' + o[p])}}; view(document);
と入力するとbodyプロパティを始めとする50個くらいのプロパティがちゃんと表示されました。