No.4ベストアンサー
- 回答日時:
> B.htmlに関しまして、Yahooのログインのようなイメージです。
> つまり、こちらからソースの改変等は一切できません。
なるほど。合点がいきました。
であれば、#1さんの紹介されている第二の方法。
フレーム内の関数コールで実現できると思います。
*iframe内の関数を呼び出す
(初めて書いたのでもっと上手い書き方があるかもしれませんが、動作確認済みです。)
------- A.html -------
<iframe id='B' style='display:none;' src='B.html'></iframe>
<script type='text/javascript'>
function init(){// contentWindow.func()
document.getElementById('B').contentWindow.D();
}
function init2(){// contentDocument内にあるscript要素のテキストノードをeval()
var script = document.getElementById('B').contentDocument.getElementsByTagName('script')[0].firstChild.nodeValue;
eval(script);
D();
}
if(typeof window.addEventListener == 'function'){
window.addEventListener('load', init, false);
} else if(typeof window.attachEvent == 'object'){
window.attachEvent('onload', init);
}
</script>
---------------------
------- B.html -------
<script type='text/javascript'>
function D(){
alert('This is B.html');
}
</script>
---------------------
eval() はおまけです。
同名関数を定義していた場合に上書きしてしまう問題があることと、
この書き方ならiframeに拘る必要がない(Ajaxならhtmlを汚さない)ので中途半端な気もしますが、参考までに。
これらの方法で B.html に submit(); されるどうかまでは検証していません。(A.htmlにsubmitしてしまうかも)
B.htmlに submit(); されたとしても、<iframe style='display:none;'> に C.htmlが読み込まれる問題があります。
なので、iframeがC.htmlになったら、A.html から C.html にリダイレクトさせる処理が必要だと思います。
そこまでするなら、AjaxでB.htmlのソースを拾ってきて、B.htmlの<form>をにA.htmlに再現する方がスマートかもしれませんが。
# 一応、JavaScriptのクロスドメイン制限はFlashを利用することで回避できます。
# http://firegoby.theta.ne.jp/archives/224
No.3
- 回答日時:
#2です。
#1の補足を読みました。> 現状、行いたいのはA.htmlを開くことでB.htmlというログイン画面を表示しないでB.html以降の後段画面に進む。ということです。
つまり、こういうことでしょうか?
* 期待する動作
1. A.html から B.html に遷移
2. B.htmlのJavaScriptによる submit(); で C.html に遷移
------------
/* A.html */
location.href = 'B.html';// 遷移
------------
/* B.html */
// ページ読み込み終了後、D() を実行する
function D(){
document.forms[0].request.value ="XXXX";
document.forms[0].submit();
}
if(typeof window.addEventListener == 'function'){
window.addEventListener('load', D, false);
} else if(typeof window.attachEvent == 'object'){
window.attachEvent('onload', D);
}
------------
遷移でいいのならこれで希望通りな気はするのですが、
この場合、A.html は B.html へのリダイレクタとしての機能しか果たせないので、初めから B.html を開くようにリンクを貼っても機能してしまいます。
(window.openならまた少し話は違いますが)
何か別の要求仕様があるような気もするのですが…。
この回答への補足
すみません。また説明不足で申し訳ありません。
B.htmlに関しまして、Yahooのログインのようなイメージです。
つまり、こちらからソースの改変等は一切できません。
以上を勘案の上で、A.htmlからB.htmlの関数Dをコール出来るか否かというところが質問の真意となります。
#1さんの回答を見る限り無理そうな気がしますね。。。
No.1
- 回答日時:
>(1)A.htmlのCボタン押下で、B.htmlの持つD関数(javascript)の呼び出し
B.htmlが呼ばれていないので、できません。
運用上jsは外部化してある場合が多いと思います。
であればB.htmlから呼び出しているjsがB.jsであれば、
A.htmlからB.jsをscriptタグで読み込んでしまえば関数を再利用
することは可能です。
また、場合によりますがフレーム系の処理をつかえば、参照する
ことは可能です。
>(2)A.htmlからB.htmlへの遷移もしくはポップアップ表示
これは普通にできません?
どこでつまっているかわからないのでなんとも言えませんが・・・
この回答への補足
説明が不十分で申し訳ありません。
現状、行いたいのはA.htmlを開くことでB.htmlというログイン画面を表示しないでB.html以降の後段画面に進む。ということです。
ですので、処理上の順番は(1)⇒(2)となります。
また、D関数の中身は以下のようになっており、
function D(){
document.forms[0].request.value ="XXXX";
document.forms[0].submit();
}
上記をA.htmlより呼び出し後、遷移もしくはポップアップを行いたいと思っています。
ですので、D関数を呼び出すかもしくは子画面に対して上記の値セット+サブミットが行えないかどうかが今回聞きたい内容となります。
ご存知でしたらお教えください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- Visual Basic(VBA) Edge操作のアプリが例外発生に 1 2023/03/12 21:22
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<iframe>~</iframe>内のwindow...
-
親フレームのURLによって、...
-
名前が定義されていないiFrame...
-
フレームでの右クリック禁止
-
子フレームの自動リロードは可...
-
親ウィンドウの別フレームを子...
-
チェックボックスのチェックを...
-
別フレームに画像を表示する
-
インラインフレームで表示され...
-
2つ親のフレームにアクセスしたい
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
フォーカス移動抑止について
-
iframeの中から親ページをスム...
-
SQLのWHEREで全てを質問する方法
-
テーブル内の数値を自動で計算...
-
JavaScript でキーを送る
-
javascriptとApacheの設定
-
テキストをクリックすると答え...
-
javascriptでalertの文字列をコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
インラインフレームをドラッグ...
-
子フレームの自動リロードは可...
-
submitボタンで他のフレームを...
-
別フレームのページが読み込み...
-
インラインフレームで表示され...
-
セレクトメニューでリンクの際...
-
親ウィンドウの別フレームを子...
-
<iframe>~</iframe>内のwindow...
-
openerは使えないのでしょうか?
-
別ページのインラインフレーム...
-
フレームでの右クリック禁止
-
親フレームからkeydownイベント...
-
onunloadイベントでの画面制御...
-
別フレームにスムーススクロー...
-
ファイルのフォルダの階層の指...
-
左右のフレームを同時にスクロ...
-
他のフレームのスクリプトを実...
-
リロードとの違い
-
別フレームの中にあるインライ...
おすすめ情報