Firefox userChrome.js greasemonkeyスクリプトスレ14

このエントリーをはてなブックマークに追加
985名無しさん@お腹いっぱい。
>>981
俺はcustom button使ってないしよくわからんのだが、
そのmain.htmlってのはタブにロードしてるんだよね?
window.content.FRAME1.location = "http://〜";
じゃないか?
Webコンソールで色々打ち込んで確認してみればいいのに。
986名無しさん@お腹いっぱい。:2011/04/03(日) 16:01:45.58 ID:YpfyLJug0
>>981
chromeなコードからコンテンツにアクセスするには window の代わりに window.content を使う
但しこのオブジェクトはセキュリティ上の理由からXPCNativeWrapper(Fx4ではXrayWrapper)で
ラップされてるので幾つかの制限事項がある
https://developer.mozilla.org/ja/XPCNativeWrapper

制限によってフレーム名による直接アクセスができない(*)ので代わりに以下のように書く
const url = "http://www.google.co.jp";
var win = window.content;
win.frames[0].location.href = url;

どうしても名前でアクセスしたいなら以下のようにも書ける
win.document.getElementsByName('FRAME1')[0].contentWindow.location.href = url;

でもname属性を使うのは古い方法。id属性を定義して以下のように書くのがベター
win.document.getElementById('FRAME1').setAttribute("src", url);


(*) wrappedJSObjectでラップを剥がせば以下のようにも書けるけど非推奨
var win = window.content.wrappedJSObject;
win.FRAME1.location.href = url;