10/07/2010

ウェブページに iframe があって複数挿入されてしまう場合の対処 [Safari Extensions を作ってみる:第十三回]

読み込んだページに独自の要素を表示させる のエントリーで書いたような形では、読み込んだウェブページに iframe があった場合に、iframe 内の html 以下にも挿入されてしまい、実に困ってしまう。そんな筈じゃないのに、って思うが仕方ない。これはかなり悩んだ。むしろ、悶絶した。

ということで、「グローバルページ」で指定した html(もしくは、その html 内で指定している Javascript)で、そのタブの url を取得し、「スクリプトを終了」で指定した Javascript に送り、その Javascript で自身の url を取得し、比較して処理するかどうかを判断すれば、iframe 内の html 以下に挿入されることはなくなる。

★「スクリプトを終了」で指定した Javascript
function cmpURL(evt) {
  if (location.href == evt.message) 次の処理;
}
// 「グローバルページ」で指定した html へ送信
safari.self.tab.dispatchMessage("getURLofTab", "");
// 「グローバルページ」で指定した html からの答えを受信
safari.self.addEventListener("message", cmpURL, false);


★「グローバルページ」で指定した html 内の Javascript
function getInfo(evt) {
  var URLofTab = safari.application.activeBrowserWindow.activeTab.url;
  safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("answer", URLofTab);
}
safari.application.addEventListener("message", getInfo, false);

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.