人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【ズバリ回答2000ポイント】iframeの中に表示しているページ内のリンクをクリックした際、すべて_blankで開く方法はありますか?iframe内ページのHTMLの記述は変えないで可能な方法をご存じの方がいらっしゃいましたら、教えて下さい。
※重複した場合、先着とさせていただきます。ズバリな回答でなくとも、独断で恐縮ながら相応のポイントを送らせていただきます。
どうぞよろしくお願い致します。

●質問者: baden
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML いただきます クリック ズバリ ポイント
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ラフティング
●1000ポイント

http://outdoor55.web.fc2.com/blog.html

↑上記はiframe内にブログを表示させています。

記事内にtarget="_blank"でリンクを3本貼ってあります。

http://outdoor55.web.fc2.com/


別手法

http://oshiete1.goo.ne.jp/qa1472298.html

◎質問者からの返答

御回答ありがとうございます。説明不足でしたが、「iframe内ページのHTMLの記述は変えないで」というのは、iframe内ページのHTMLのタグには、target="_blank"が付いていないという条件で、といった意味です。

target="_blank"指定のないタグを、iframeの外から強引にtarget="_blank"開き指定にできないか、といった質問になります。当方の記述不足でご面倒をいただいてしまい、大変恐縮です。終了後、1000ポイントでご了承下さい。


2 ● Mook
●2000ポイント ベストアンサー

iframe の親側の変更は可能でしょうか。prototype.js を使用した例です。

対象のリンクを習得するために iframe タグに ID を付けています。


http://feed.designlinkdatabase.net/feed/outsite_613.aspx

を参考にしましたが、下記は iframe 内のリンクを別ウィンドウで開くようにしたサンプルです。

<html>
<head>
</head>
<body>
<!--- 対象となる iframe :src は実際に合わせて変更--->
 <iframe id="targetFrame" src="http://myweb.com/child.html"></iframe>

<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript">
<!--
var PopupWindow = Class.create();
PopupWindow.prototype = {
 initialize: function() {
 var t = document.getElementById('targetFrame');
 var elements = t.contentWindow.document.getElementsByTagName('a')
 for (var i = 0, len = elements.length; i < len; i++) {
 Event.observe(elements[i], 'click', this.addPopupEvent.bindAsEventListener(this));
 Event.observe(elements[i], 'keypress', this.addPopupEvent.bindAsEventListener(this));
 }
 },
 addPopupEvent: function(event) {
 var element = Event.element(event);
 var link = element.getAttribute('href');
 window.open(link);
 Event.stop(event);
 }
};

Event.observe(window, 'load', function () {
 new PopupWindow();
}); 
-->
</script>
</body>
</html>

http://prototypejs.org/download

◎質問者からの返答

御回答ありがとうございます。完璧な回答です。どうもありがとうございます。終了後、2000ポイント送らせていただきます。

一点、追加になってしまうのですが、iframeを呼び出す側とiframe内のドメインが違う場合にも通用する方法というのはあるものなのでしょうか?

(ちなみに諸問題でドメインを統一する&iframe内側を書き換えるのが難しいだけで、iframeに先方のサイトを呼び出すことは許可をもらっています)

もしも存在しておりましたら、是非ご教授下さい。その際にも、もう2000ポイント送らせていただきます。

※Mook様には以前別の質問でも大変お世話になりました。私の方は相変わらず説明不足でして、恐縮です。


3 ● gotovip
●2000ポイント

iframeページの記述と使用している外部インタフェイスが不明なので、勝手にstrict関係と思い込んでの回答です。

はずしていたらポイントは結構です。

javaスクリプトでのリンク制御

http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&no=219...

jQuery使用

http://www.kadoyan.com/item/515/


ちなみに読み込むコンテンツの記述も不可なのでしょうか?

◎質問者からの返答

御回答ありがとうございます。参考にさせていただきます。終了後、2000ポイント送らせていただきます。

現在以下の状況でも、iframe内リンクをすべて_blankにする方法を調べています。

・iframeを呼び出す側とiframe内のドメインが違う

・iframe内に読み込まれるhtmlをいじることはできない

「できない」という御回答でも非常に意味がありますので、ご存じでしたらお教えいただけませんでしょうか?

その際は、再度ポイントを送らせていただきます。どうぞよろしくお願い致します。


4 ● Mook
●2000ポイント

コメントが無効でしたので、再回答で失礼します。

できないという回答ですのでこちらはポイント不要です。


セキュリティの問題から、スクリプトは自ドメイン以外のDOMを操作することはできません。

もしこれを行う方法が見つかったとすると、それはセキュリティホールとして各ブラウザ、もしくはWebサーバ、は早急に対策パッチでそれをふさぐことになるでしょう。


もしこれを可能とするのであれば、ユーザがセキュリティレベルを意識的に下げた環境(Windows の ActiveX の実行)を許可したようなケースになります。

今回の質問の目的が OS やブラウザに限定されない汎用的なものを想定しているのであれば、他ドメインの DOM の操作はできないと考えたほうが良いでしょう。


特定の環境下で実現方法を求めているのであれば、ある程度は可能かもしれません。

個人のページですが下記のような記事もありました。

http://d.hatena.ne.jp/fits/20090301/1235879562



コメントを有効にしていただければ、このような点は手軽に捕捉できますので、有効にしていただけると助かります。

関連記事

http://openlab.dino.co.jp/2008/11/07/193329349.html

http://ido.nu/kuma/2008/09/06/visiting-chrome-security-check-imp...

http://d.hatena.ne.jp/nopnop/20080405/1207370188

◎質問者からの返答

御回答ありがとうございます。レギュラーな環境では不可ということが確定するだけでも前進しますので、大変に貴重な内容になります。

度重なる的を射ない質問に正確な御回答をお寄せいただき、どうもありがとうございます。大変に助かりました。

質問は終了させていただきます。皆様どうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ