下記は実現可能でしょうか?
また実現可能であれば具体的な例をお教えください。

A.html※Cボタンを保持している
B.html※D関数(javascript)を保持している

(1)A.htmlのCボタン押下で、B.htmlの持つD関数(javascript)の呼び出し
(2)A.htmlからB.htmlへの遷移もしくはポップアップ表示

以上、よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> 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
    • good
    • 0

#4の補足です。



> そこまでするなら、AjaxでB.htmlのソースを拾ってきて
iframeのHTMLでも拾えます。

document.body.appendChild(document.getElementById('B').contentDocument.getElementsByTagName('form')[0]);
    • good
    • 0
この回答へのお礼

返答が遅れ申し訳ありません。上記方法にて実現できました!
どうもありがとうございました。

お礼日時:2009/06/09 09:05

#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さんの回答を見る限り無理そうな気がしますね。。。

補足日時:2009/05/25 16:46
    • good
    • 0

(1) は既に回答されているように外部JavaScriptを使うのがいいかな、と思います。


なので、(2)だけ。

> (2)A.htmlからB.htmlへの遷移もしくはポップアップ表示

// 遷移
location.href = 'B.html';

// ポップアップ
window.open('B.html','_blank');

これでどうでしょうか?(動作確認済み)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2009/05/25 16:43

>(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関数を呼び出すかもしくは子画面に対して上記の値セット+サブミットが行えないかどうかが今回聞きたい内容となります。
ご存知でしたらお教えください。

補足日時:2009/05/25 13:05
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q画面の設定以外で文字の大きさを変更したい場合

こんばんは。WinXPを使っています。
画面のプロパティーから解像度を変更しても、文字の大きさが大きく感じます。WinXPの画面の設定から文字の大きさを変更する場合は解像度を変更しればいいと思うのですが、それでも小さくならない場合はどのようにして文字を小さくする事ができるでしょうか?

Aベストアンサー

解像度以外の手段では
画面のプロパティ→「デザイン」タブ→詳細設定
で、アクティブタイトルバー、パレットタイトル、ヒント、メッセージボックス、メニュー、選択項目、非アクティブタイトルバーの文字の大きさをポイント単位で変更できます。

ブラウザの文字の大きさなら、ブラウズの最中にマウスのスクロールボタンをCtrlボタンを押しながらグリグリすると5段階に変更できます。

ExcelやWordでしたら、ツール→オプション→全般タブから標準の文字の大きさをポイント単位で変更できます。

Q[JavaScript]ボタンを押下すると流れる文字が再生する

『ボタンを押下すると流れる文字が再生する』javascriptはどのようなソースコードになりますでしょうか。

ご存じの方、アドバイスをお願いします。

Aベストアンサー

以下でどうですか?

<!DOCTYPE html>
<html>
<head>
<title>スクロール</title>
<meta charset="utf-8" />
<script type="text/javascript">
<!--
var msg = '文字のスクロールテスト 文字のスクロールテスト'; // メッセージ内容
var speed = 500; // スピード(ミリ秒)
var fluency = 2; // なめらかさ(文字数)
var swc = 0;

function textscroll(){
msg = msg.substring(fluency, msg.length) + msg.substring(0, fluency);

// テキストフィールドにデータを渡す処理
document.form1.scroll.value = msg;

if(swc) setTimeout("textscroll()", speed);
}

function start() {
if(swc) {
swc = 0;
document.form1.buton.value = "開始";
} else {
swc = 1;
textscroll();
document.form1.buton.value = "停止";
}
}
// -->
</script>
</head>
<body>
<form name="form1" action="#">
<input type="text" name="scroll" size="30">
<input type="button" name="buton" value="開始" onclick="start()">
</form>
</body>
</html>

以下でどうですか?

<!DOCTYPE html>
<html>
<head>
<title>スクロール</title>
<meta charset="utf-8" />
<script type="text/javascript">
<!--
var msg = '文字のスクロールテスト 文字のスクロールテスト'; // メッセージ内容
var speed = 500; // スピード(ミリ秒)
var fluency = 2; // なめらかさ(文字数)
var swc = 0;

function textscroll(){
msg = msg.substring(fluency, msg.length) + msg.substring(0, fluency);

// テキストフィールドにデータを渡す処理
document.form1.scroll.value = ...続きを読む

Q「新しいウィンドウで開く」で開く画面の大きさの変更の仕方を教えて下さい。

 恐れ入ります。初歩的な質問で済みません。
検索結果などがたくさん出て、それら一つ一つを右クリックで「新しいウィンドウで開く」をクリックし表示される画面の大きさを変更するにはどうしたら良いのでしょうか?
 ちなみに今は画面の中央に小さく表示されるのですが、目一杯の大きさに変更したいのです。
どうか宜しくお願い致します。

Aベストアンサー

>検索結果などがたくさん出て

タブブラウザを使った方がいいかな~と思います。

IEだと仰る様に一つ一つを右クリックで「新しいウィンドウで開く」をクリック
するのも面倒ですし、下におろすのも面倒です。

タブブラウザなら、画面がウインドウだらけになるうっとうしさも無いですし、
ポップアップも制御できます。

画面の切り替えもタブをクリックするだけですし、たくさんひらいた
ページをまとめて閉じることもできます。

ご存知でしたら失礼しました。

QJavascriptで、フォームボタン押下(submit)せず、リンクURLを書き換える

 javascriptで、
 1.フォームのテキストボックスに入れられた値を取得し、
  例)テキストボックス入力 ; test
 2.元々記述されているリンクURLをユーザがクリックした時、
  例)元々のリンクURL ; <a href="www.google.co.jo?q= ~...
 3."1"のテキストボックス内に記述された値を取得して、"2"のURLを書き換え、
  例)テキストボックス内の文字をURLの一部に追記する ; <a href="www.google.co.jo?q=test  ~...
 4.書き換えられた後のURLにユーザを飛ばす、
 ・・・という事って出来るんでしょうか。
 上記動作内でユーザの動作は、
  テキストボックスに文字を入れる、という動作と、
  リンクをクリックする、という動作のみです。

 フォームのボタン押下後、というのであれば出来たんですが、上記の様な動作のコードが思い浮かびません・・・。PHPとかCGIではなく、Javascriptで何とか出来ないでしょうか。
 お知恵拝借、よろしくお願いします。

 javascriptで、
 1.フォームのテキストボックスに入れられた値を取得し、
  例)テキストボックス入力 ; test
 2.元々記述されているリンクURLをユーザがクリックした時、
  例)元々のリンクURL ; <a href="www.google.co.jo?q= ~...
 3."1"のテキストボックス内に記述された値を取得して、"2"のURLを書き換え、
  例)テキストボックス内の文字をURLの一部に追記する ; <a href="www.google.co.jo?q=test  ~...
 4.書き換えられた後のURLにユーザを飛ばす、
...続きを読む

Aベストアンサー

onkeyupで処理してみては?

<script>
function hoge(v){
var url="http://www.google.co.jp?q=";
document.getElementById("fuga").href=url+v;
}
</script>

<input type="text" onkeyup="hoge(this.value)">
<a href="http://www.google.co.jp?q=" id="fuga">とぶ</a>

QOutlookメールで、画面の文字の大きさを変更するには、どうしたらよ

Outlookメールで、画面の文字の大きさを変更するには、どうしたらよいのですか。

Aベストアンサー

画面の文字の大きさは、
[表示] メニュー → [現在のビュー] → [現在のビューの編集] →
[その他の設定] と [自動書式] の項目でそれぞれフォントの大きさが変更できます。
また、送信メールとテキスト形式の受信メールのフォントの大きさは、
[ツール] メニュー → [メール形式] タブ → [ひな形およびフォント] → [ひな形] タブでそれぞれ変更できます。

Qブラウザの×ボタン(閉じるボタン)押下時のイベントをひろいたい

javaScriptでブラウザの閉じるボタン(×ボタン)を押したときに、functionを走らせたいのですがうまくいきません。onunloadで以下の処理を行っています。


if(event.clientX <= -8980 && event.clientY <= -9000 || event.clientX >= 32700 && event.clientY >= 32700) {
 //ブラウザ閉じられたときの処理
}
閉じるボタンを押してなくても走ってしまったり、不安定なのですが、×ボタン押下時のイベントの拾い方をどなたかご教授ください。よろしくお願いします。

Aベストアンサー

すでにお気づきかも知れませんが、下記URLの掲示板にヒントが載ってました。
WSH利用者さんのソースが、なかなか良いみたいです。

-- 以下、引用 --
function window.onbeforeunload() {
  if(((event.clientX > document.body.clientWidth) && (event.clientY<0)) || event.altKey){
    閉じたときの処理();
  }
}
-- --

参考URL:http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=559017&SiteID=7

Q最初に表示されるIEの画面の大きさは、変更可能?

こんにちは、みなさん。

インターネットを見る時に、最初に表示される、インターネットエクスプローラーの
画面の大きさは変更できますか??

変更できるなら、どんなやり方ですか??

ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

IEを起動して始めに表示される画面(ホームページ)の状態で操作します。
マウスを使って表示させたい大きさにIEの全体のウィンドウを変更します。
任意の大きさと位置が決まったら「Shiftキー」を押しながら閉じるボタンをクリックしてIEを終了させます。

※Shiftキーでうまくいかない場合はShiftキーの替わりにCtrlキーを使って試してみてください
※大きさを決めるときは、いつも始めに開いたページでウィドウの大きさ・位置を決めるのがコツです
※IEにい限らず、エクスプローラも同じ要領で変更できます

Qようこそ画面アイコン大きさ変更

ようこそ画面でアイコンの大きさを変更したいのですが、どのようにしたらよいでしょうか、
ちなみに以下のレジストリー変更ではダメでした。
HKE_CURRENT_USER→desktoptop→logpixelsで数値の値を変える

Aベストアンサー

変えられないと思います。

QformでPOSTするのと同じ動作をボタンとjavascriptで実現したいのですが

<form name="myFORM" method="POST" action="xxx.php">
<input type="text" name="NAME">
<input type="submit" value="送信">
</form>
上記と同じ動作を
<button onclick="fpost('tanaka','POST','xxx.php')">送信</button>
とjavascriptで実現したいのですが可能でしょうか?
可能でしたらどのようなスクリプトになりますでしょうか?
document.myFORM.submit();とかではなく、formタグを全く使わずPOSTしページ遷移したいのですが。
XMLHttpRequestとlocation.replace()とかでできるのでしょうか??
すみませんがよろしくお願い致します。

Aベストアンサー

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = document.createElement("input");
i.setAttribute("name","fuga");
i.setAttribute("value","xxx");
f.appendChild(i);
var i = document.createElement("input");
i.setAttribute("name","piyo");
i.setAttribute("value","yyy");
f.appendChild(i);
document.getElementsByTagName("body")[0].appendChild(f);
f.submit();
}
</script>
<input type="button" value="test" onClick="hoge()">

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = documen...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング