フレーム分割したページで、左ページで選択した内容部分を、右ページのボタンを押すことで別のウィンドウを作成して表示する、という動作をさせたいんですが、Javascriptでできるんでしょうか? 図にするとこんなです。http://www.lawdata.org/etc/050530hatena.GIF 

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/05/30 21:31:57
  • 終了:--

回答(6件)

id:kikue70 No.1

kikue70回答回数110ベストアンサー獲得回数12005/05/30 22:03:25

ポイント20pt

http://www.hatena.ne.jp/1117456317#

人力検索はてな - フレーム分割したページで、左ページで選択した内容部分を、右ページのボタンを押すことで別のウィンドウを作成して表示する、という動作をさせたいんですが、Javascriptで..

右フレームに先述しておきます。


<script>


function openwindow(uri,nm) {


menuwin=window.open(uri,nm,”width=100,height=100”);

menuwin.focus()


}

</script>


この様なリンクでいかがでしょうか。


<a href=”javascript:openwindow(’http://フルパス/details.html’, ’_details’,’height=100,width=100’)”>ボタン(イメージでも)</a>

id:english No.2

english回答回数304ベストアンサー獲得回数02005/05/30 22:45:43

可能です。とりあえず、同じウインドウ内に

ボタンがある場合のサンプルを下記に書きます。フレーム対応にするには、それほど難しくないでしょう。


---サンプル--------

あいうえお

かきくけこ

・・・本文・・・

<script>

function getText(){

win = window.open(””,”selection”,”width=600,height=600,left0,top=0,status=1,scrollbars=1”);

win.document.write(document.selection.createRange().htmlText);

}

</script>

<form>

<input type=button value=”テキスト選択されている部分を表示” onClick=”getText();”>

</form>

-------ここまで----------------


document.selection.createRange().htmlText

で、Windows版IEなら、これで選択されているテキストを取得できます。

id:hichii No.3

hichii回答回数446ベストアンサー獲得回数02005/05/30 23:06:12

ポイント20pt

http://www.openspc2.org/reibun/javascript/frame/003/

�}�E�X�I�[�o�[�ʼnE���t���[���ɑΉ��������e���\������

これの’page1.html’’page2.html’にボタンを作って別窓指定でリンクを貼れば出来ますが・・・・・左で選択した文章の詳細を別ウィンドウで表示したいと理解してのお返事です。必要なのは、’page1.html’と’page2.html’そしてそれぞれの詳細・・例えば’page1.html’にはsyousai1.htmlです。

id:english No.4

english回答回数304ベストアンサー獲得回数02005/05/30 23:22:41

ポイント600pt

http://www.bricklife.com/weblog/000043.html

bricklife.weblog.*: Safari「でも」使える MT Bookmarklet

2回目で失礼します。

先ほどのサンプルは、Windows版IE専用であるため、FirefoxやMacのSafariにも対応するものに書き直したものを下記に書きます。


なお、hatenaのシステムの都合により半角のダブルクォテーションが全角に表示されていると思いますが、適宜読み替えてください。また、<br>とあるのは本来半角です。円マークも半角です。


------------------------------

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>

<title>テキスト選択表示</title>

</head>

<body bgcolor=#FFFFFF>

あいうえお


かきくけこ


<script type=”text/javascript”>

<!--

function getText(){

win = window.open(””,”selection”,”width=600,height=600,left0,top=0,status=1,scrollbars=1”);

var moji = ””;

if(window.getSelection){

if(navigator.userAgent.indexOf(”Safari”) != -1){

moji = window.getSelection();

} else {

moji = window._content.getSelection().toString();

moji = moji.replace(”¥n”,”<br>”);

}

} else {

moji = document.selection.createRange().htmlText;

}


win.document.open();

win.document.write(moji);

win.document.close();

}

// -->

</script>

<form>

<input type=button value=”テキスト選択されている部分を表示” onClick=”getText();”>

</form>

</body>

</html>

http://homepage2.nifty.com/BASH/WWW/JavaScript/anotherpage.html

JavaScript集(異なるページからJavaScriptを操作する) -Bash Homepage-

フレーム内のオブジェクトの参照の仕方のサンプルです。

id:washita

フレームに対応させられません・・・ 『parent.fr2.』みたいな指定をどこにしたらいいのか… できれば、左フレームに対応させた場合まで教えていただけないでしょうか。 

2005/05/31 13:54:40
id:fayn No.5

fayn回答回数22ベストアンサー獲得回数02005/05/31 17:05:54

自分も興味があったので、自分でちょっとつくってみました。


一応、図の通りのような形になっていると思います。


参考URLにアップロードしていますので、詳しいところはソースを表示させてごらんください。

http://fayn.s59.xrea.com/x/tips/javascript/js1/frame.htm


構造は、

 Frame.html (フレーム設定ページ)

 a.html(フレームA、文字選択するページ ・・・フレーム名は、framea)

 b.html(ボタンがあるページ ・・・・フレーム名は、framea)

となってます。


b.htmlに下のようなスクリプトを埋め込みました。


<SCRIPT language=javascript>

<!--


function op(){


if (window.getSelection){

selectedText=window.parent.framea.getSelection().toString();

selectedText= selectedText.replace(”¥n”,”

”);

}

else if (document.getSelection){

selectedText=parent.framea.document.getSelection();

selectedText= selectedText.replace(”¥n”,”

”);

}

else if (document.selection){

selectedText=parent.framea.document.selection.createRange().htmlText;

}

if(selectedText){

WO=document.open(””,”test”,”scrollbars=yes, width=300, height=200,toolbar=yes,location=yes,directories=yes,outerWidth=300,outerHeight=200,left=100,top=100”);

WO.document.open();

WO.document.write(”<HTML><BODY>¥n”);

WO.document.writeln(selectedText);

WO.document.write(”</BODY></HTML>¥n”);

WO.document.close();

}

}

//-->

</SCRIPT>


一応、WindowsXpの}IE6.029とFirefox1.04で動作確認しました。

id:washita

動きますね! ありがとうございます!

2005/05/31 23:02:39
id:fayn No.6

fayn回答回数22ベストアンサー獲得回数02005/05/31 20:47:56

ポイント1500pt

連続で投稿してすいません。


間違いの訂正と 結構陥りやすいポイントの補足説明です。


前の投稿では両方とも、frameaと書いていましたが、

 a.html(フレーム名は、framea)

 b.html(フレーム名は、frameb)

 の間違いでした。

 

あと、b.htmlの12行目の

 selectedText= selectedText.replace(”¥n”,”

”);

は誤りで

正しくは、

selectedText= selectedText.replace(/¥n/g,”

”); 

こちらが正解です。


 

 

・そして、エラーになって はまりやすい点です。


Javascriptを使い、フレーム間で選択文字列やクリップボードなどのデーターを扱う場合は、フレームが基本的に同じサイト内のページの場合しかできないみたいです。(セキュリティの関係から)


Javascriptで アクセスが拒否されました とエラーが出る場合、このところにひっかかっている場合があります。

自分のサンプルのframe.html,a.html,b.htmlをデスクトップなどに保存して

ローカルでIEで実行するとよくわかるのですが、不明なゾーンとなってしまい、アクセスが拒否されてしまいます。

ローカルで実行したいのならば、Firefoxなどのブラウザをつかうしかないようです。

  (IEでローカルでやる方法がわかりませんでした。)


IEの場合はめんどくさいですが、サーバーにアップして確認するとエラーはでません。


あくまで、これはセキュリティ上の問題でローカル(不明なゾーン)では、フレーム間のデーター受け渡しができないものと思われます。


これは、自分もはまった罠で、なかなか曲者でした。


URLに 自分なりに纏めて説明ページを作ってみました。

id:washita

丁寧にありがとうございました。とても嬉しいです。

2005/05/31 23:03:38

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません