質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

3681閲覧

iframe内のjs(郵便番号の取得)がieで初回表示時に上手くいかない

sibugin

総合スコア7

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/11/12 18:51

編集2015/11/22 17:53

初回読み込み時にiframe内のjs(郵便番号の取得)が動かず、
再読み込みすると動くようになるという挙動で困っています。

再読み込み後、キャッシュを消去してブラウザを立ち上げ直して表示すると
またjs(郵便番号の取得)は動かなくなります。

crome(最新)やfirefox(最新)では起こらず、ie(11)で起きる現象です。

またiframeを表示しているページとiframe内ではドメインが違います。

ieでのみ再読み込みすると動くようになるという挙動からすると、
何が原因になっていそうでしょうか。

手がかりとなりそうなことを教えて頂けたら幸いです。

【追記:2015.11.15】
ご回答いただきましてありがとうございました。

色々試してみましたところ、下記内容が判明しました。
・ieインターネットオプションのプライバシーを低にすると動く
・同じドメインのサーバーにアップすると動く

別ドメインのため上手くクッキーが取れていないことが原因だったようです。

既存のLPに他社様が提供しているショピングカートのフォームを組み込むという内容のため、
同じドメインにするのが難しい状況です。
その為クロスドメインの状態で解決策を探しています。

iframe内のhtml編集が【headerタグ内に追記】と【bodyタグ内に追記】しかできないため、
コンパクトポリシーの追記ができず、
またiframeの中にjqueryでform送信する方法も試してみましたが解決に至りませんでした。

参考にしたサイト:
http://taitan916.info/blog/?p=2019)
http://d.hatena.ne.jp/R-H/20111101)

再度質問となってしまい恐縮ですが、
他に試せる方法などご存知ではないでしょうか。


下記index.htmlのコードです。

【header内】

<script language="javascript"> var arg = new Object; var pair=location.search.substring(1).split('&'); for(i=0;pair[i];i++) { var kv = pair[i].split('='); arg[kv[0]]=kv[1]; } document.write("<img src='https://iframe.com/frame/set_referer?referer="+arg["referer"]+"' width='1' height='1' >"); </script>

【body内】
```

<div id="content"> <script type="text/javascript"> var form_domain = "iframe.com"; </script> <iframe src="https://iframe.com/frame/form_order/LPform?form_type=form_order&form_domain=iframe.com" id="egg_form" name="egg_form" frameborder="0"></iframe>
</div>
※iframe内に表示しているドメインをiframe.comに書き換えています。 ---------------------------- 【追記:2015.11.23】 クロスドメインの状態で解決することができなかったため、 質問を終了することにいたしまして、 ベストアンサーを決めさせていただきました。 ご回答いただきましてありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/11/15 08:05

コードはMarkdown記法でシンタックスハイライトして見やすくしていただけると助かります。
sibugin

2015/11/15 08:58

質問を見て頂きましてありがとうございます。 シンタックスハイライトに対応いたしました。 ご確認いただけますと幸いでございます。
guest

回答2

0

下記ページの解説が参考になるのではないでしょうか。

JavaScriptの動かないコード (中級編) iframe内にDOMアクセスできないエラー

ソースを見ていないので外れているかもしれませんが・・・後半に説明されている通り IE11 では

フレーム要素単体のエレメントではonloadがきかないので,かわりにonreadystatechangeイベントを割り当てる。

一方、Firefox では

IEのようにはひねらず,onloadが使える。

という挙動の違いがあるため、その両方に対応した実装方法を採用する必要があります。続きの部分に実装例も載っていますので、参考にしてみてください。

投稿2015/11/13 01:54

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

コードを見てみないと何とも言えませんが、、、とりあえず下記が怪しいですね。。。

  1. 初回読み込み時にJavascriptエラーが発生している可能性

→ 外部ファイルにて定義した関数を呼び出そうとしたが、外部ファイルはまだ読み込み完了していなかったなど
2. 再読み込み時はキャッシュされたjsファイルが存在している為、関数が実行できた可能性

つまり、下記を確認してみてください。

A. 初回読み込み時にJavascript エラーが発生していないかどうか
B. 初回読み込み後、キャッシュを削除して再読み込みを行った場合、iframe内のjs(郵便番号の取得)が呼び出せているかどうか

キャッシュが原因なら、外部JSの読み込み完了をもって処理を開始するようにすればよいかなと思います。(onloadなど)

見当違いでしたらごめんなさい。

投稿2015/11/13 01:12

usk

総合スコア397

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問