• 締切済み

JavaScriptについて、困っています。

マウスで選択されているテキストを表示できないでしょうか 調べた中で一番近かったのが http://h2js.seesaa.net/article/88952666.html こちらで紹介されています。 ・ただしそれだとIEでは使えないのでIEで使えるようにしたいです。 document.getSelection()はIEで使用できないので、 IEで実装されているdocument.selection()に変えたのですが 上手くいきませんでした。 ・また動作する場所を限定されていますが、 限定しないでページ内すべてのテキストで使えるようにしたいです。 恥ずかしい話、質問者はJavaScriptがほとんどわからないので お手数ですがJavaScriptを書いてもらえると助かります。 よろしくお願い致します。

みんなの回答

  • Dumper
  • ベストアンサー率28% (24/84)
回答No.4

mousemove監視が働きっぱなしなのも良くないのでflagもつけました. 丁度別質問の回答に似た動作がありましたので. ■ リアルタイム <script type="text/javascript"> var sflag = 0; document.onmouseup = function(){ sflag = 0; } document.onmousedown = function(){ sflag = 1; } document.onmousemove = function() { var rng; if(sflag && ( rng = document.getSelection? document.getSelection() : document.selection ? document.selection.createRange().text: '') ){ document.getElementById("text2").value = rng; } } </script> <input type="text" id="text2">

  • auty
  • ベストアンサー率58% (284/486)
回答No.3

>>> 選択範囲が限られましたが サンプルは、選択の有効範囲が指定できることを表しています。 つまり、    <p onmousemove="selectStr()"> がある所のみ有効に出来るということですね。 >>> 別のテキストを選択するまで消えないように出来ないでしょうか これは、「選択されている文字列」が空のときは変更しなければ良いですね。 --------------------------------------------------------------------- function selectStr() { var textElem = document.getElementById("text1"); var str ; if (navigator.appName.indexOf("Microsoft") > -1) { if (document.selection) { str = document.selection.createRange().text; } else { textElem.value = "参照不可"; return; } } else { str = document.getSelection(); } if (str!="") textElem.value =str; }

  • Dumper
  • ベストアンサー率28% (24/84)
回答No.2

どういうきっかけにしたいかでイベントの種類が違います。 希望のタイミングなどがあれば、それを書けばレスがきっと入りますよ。 ■ サンプルと同じきっかけ マウスアップ <script type="text/javascript"> document.onmouseup = function() { document.getElementById("text1").value = document.getSelection? document.getSelection() : document.selection ? document.selection.createRange().text: ''; } </script> <input type="text" id="text1"> <br> ■ マウスで選択 → リアルタイム表示 <script type="text/javascript"> document.onmousemove = function() { document.getElementById("text2").value = document.getSelection? document.getSelection() : document.selection ? document.selection.createRange().text: ''; } </script> <input type="text" id="text2">

josyu-earth
質問者

お礼

回答ありがとうございます。2つも書いていただいて感謝しています。 希望のタイミングを書く必要があったのですね。 onmousemoveのリアルタイム表示がわかりやすくていいと思います。 実際に使ってみてみましたら、 見事に選択されたテキストが表示されました。 ただ他のスペースをクリックすると消えてしまいます。 別のテキストを選択するまで消えないように出来ないでしょうか

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

以下のコードを試してしてみてください。 -------------------------------------------------------------------- function selectStr() { var textElem = document.getElementById("text1"); if (navigator.appName.indexOf("Microsoft") > -1) { if (document.selection) { textElem.value = document.selection.createRange().text; } else { textElem.value = "参照不可"; return; } } textElem.value = document.getSelection(); }

josyu-earth
質問者

お礼

回答ありがとうございます。 選択範囲が限られましたが見事IEで表示できました。

関連するQ&A

  • Javascript使用の固定ナビゲーションの実装

    ページをスクロールしても同じ位置に固定されるナビゲーションバーを実装するのに http://javascript123.seesaa.net/article/101299599.htmlさんのソースを利用しました。 ですが実行ページをIEで見ると分かると思うのですが、IEで表示した場合、表示がブレて 綺麗に実装出来ません。IEでも他のブラウザと同じように表示されるようにソースを改変 して直すことは出来ないでしょうか?また何故IEだとこのソースの動作がおかしくなる のかも教えて頂きたいです。

  • フォームの文字入力モードを自動的に切り替える方法

    下記サイトを参考に実装したところ、 Google Chromeで確認すると動作しませんでした。 http://javascript123.seesaa.net/article/131508328.html Javascriptを使えば良いようなのですが、 対応するJavascriptを見つけることができません…。 ご存知の方、いらっしゃいませんでしょうか。 ちなみに対応させたいブラウザは IE7~IE10・Fx(特にバージョンは問わない)・GC(特にバージョンは問わない)です。 よろしくお願い致します。

  • JavaScriptのソースについて

    マウスでクリックすると画像やテキストがスライドするようなサイトを作りたいのですが、 JavaScriptのソースがうまく機能しません。 いろいろ調べたり、試したりしたのですが、解決しなかったのでご回答頂けれと思います。 <script language="javascript" type="text/javascript" src="js/jquery.js"></script> <script language="javascript" type="text/javascript" src="js/jquery.flow.1.2.min.js"></script> <script language="javascript" type="text/javascript"> <!-- $(document).ready(function(){ $("#myController_h").jFlow({ slides: ".loves_slide_h", controller: ".jFlowControl_h", // must be class, use . sign slideWrapper : "#jFlowSlide_h", // must be id, use # sign selectedWrapper: "jFlowSelected", // just pure text, no sign width: "680px", height: "250px", duration: 400, prev: ".jFlowPrev_h", // must be class, use . sign next: ".jFlowNext_h" // must be class, use . sign }); }); //--> </script> ソースはこんな感じで作ってみたのですが、お分かりになる方がいらっしゃいましたらよろしくお願い致します。

  • textareaの選択された文字列の取得

    HTMLエディタを作ろうとしています。 textAreaの選択された文字列の開始桁数・終了桁数を取得するにはどのようにすればよいのでしょうか? var selected_text; if (document.getSelection) // Moz { selected_text = document.getSelection(); } else if (document.selection && document.selection.createRange) // IE { rng = document.selection.createRange(); selected_text = rng.text; } alert(selected_text); これで、選択された内容は取得できたのですが、初めと終了の桁数が取れていません。 クロスブラウザに対応したく、IE6以上、FF3、Opera9.5、Safari3.1、Choromeにて動作を確認したいのですが、お分かりになる方いましたら、よろしくお願いします。

  • htmlとjavascript

    javascriptを外部ファイルで作成しています。 HTMLの作ったテキストとjavascriptで作ったテキストを同時に、 組み合わせたいのですがどうしたらいいのでしょうか…? <body> <h1>タイトル</h1> <p>内容</p> ここにjavascriptで文字等を表示 </body> 外部ファイルのjavascriptで「document.write(・・・・・)」 だと、htmlの文章が消えてdocument.writeの文だけになってしまうので、 何か解決策を教えていただけると幸いです。 よろしくお願いいたします。

  • <body>内のJavascriptでCSSを読み込んで適用させたい

    理想:http://iswebmag.hp.infoseek.co.jp/sample171.html ※↑IEでは動作するけどFFで動作しない こんな感じの動作をページ読み込み時に自動で実行したいのですが、 FireFox3では上手く動作しないようです。 何かいい方法はありませんでしょうか? html <body> <script type="text/javascript" src="roadcss.js"></script> </body> _____ roadcss.js function roadcss(){ document.createStyleSheet('http://file.tubamesound.blog.shinobi.jp/clap.css'); document.getElementsByTagName('center')[1].className="hide";} roadcss(); もちろん<head>内で直接読み込めばいいよとかはなしですよ?

  • VBAからjavascriptに値を渡す

    VBAでIEを操作しております。 一部javascriptを使って以下のようなコードで、リンクをクリックしています。 ie.document.Script.setTimeout "javascript:document.getElementById(""ID"").click()}", 10 getElementById(""ID"")のID部分を変数にしたいのですが、 Dim ID as String ID=○○ ie.document.Script.setTimeout "javascript:document.getElementById(○○).click()}", 10 としてもうまく動きません。 javascriptの中身をfunctionにして、引数に○○を持っていっても動きませんでした。 どうすれば引数を渡すことができますか。 jscriptを使えばできそうな気がしたのですが、 js.CodeObject.関数名(引数)で渡せる引数が1つだけ?のようで こちらも頓挫しております。どうかご教示お願いします。

  • javascriptをCSSに書き込むと動作しません。何故ですか?

    下記のjavascriptをCSSに書き込みました。拡張子は.jsとしました。 jsのフォルダにtopmuv.jsというファイル名にしました。 <script type="text/javascript"> <!-- function blink() { if (!document.all) { return; } for (i = 0; i < document.all.length; i++) { obj = document.all(i); if (obj.className == "blink") { if (obj.style.visibility == "visible") { obj.style.visibility = "hidden"; } else { obj.style.visibility = "visible"; } } } setTimeout("blink()", 500); } // --> </script> </head> <body onload="blink()"> htmlの読み込みは <LINK rel="stylesheet" href="js/topmuv.js" type="text/javascript"> と書いています。 この場合、上記javascriptのソースをシート上にダイレクトに書き込むと正常に動作しますがcssにすると動作しません。 何が悪いのでしょうか? 詳しい方宜しくお願いします。

  • IEではJavaScriptの入れ子はダメ?

    画面で各ページの共通する部分をJavaScriptで作って、外出しファイルにし、それぞれのページで使っています。 つまり、 <script language=JavaScript1.2 src=xxx.js></script> としているわけですが、その外出ししたスクリプトファイルの中で、さらに別のスクリプトファイルを入れ子状態で使っています。 つまり、上記の「xxx.js」の中で、 document.write("<script LANGUAGE=JavaScript1.2 src=yyy.js></script>\n"); としているわけです。 NN4.78では、うまく行っていると思ったのですが、IE5.5で見たら、表示がおかしいことに気づきました。 このyyy.jsでテーブルを定義し、テーブルを途中まで吐き出して、残りはxxx.jsで吐き出しています。 ところが、IEでブラウズすると、xxx.jsで吐き出す残りの部分がyyy.jsで吐き出す<table><tr>・・・より前に来てしまします。 (・_・")? IEではJavaScriptの入れ子は認識できないのでしょうか? やっぱり、IEだからですかね?

  • JavaScript内にJavaScriptを読み込む方法

    HTML内に <script type=\"text/javascript\" src=\"main.js\"></script> という一行を追加すると、バナーが表示されるというスクリプトを作成しています。 main.jsは、 html = \'<script language=\"JavaScript\">\'; html += \'var url0101 = \"url01.xxx.jp\";\'; html += \'var url02 = \"url02.oooo.jp\";\'; html += \'</script>\'; html += \'<script language=\"JavaScript\" src=\"http://xxx.xxxx.xxx/test.js\"></script>\'); html += \'<script language=\"JavaScript\">\'; html += \'Function01(\"check\")\'; html += \'</script>\'; document.write(html); というような風になっており、 (1) 変数の宣言 ↓ (2) http://xxx.xxxx.xxx/test.jsの読み込み ↓ (3) (2)で読み込んだjs内の関数Function01を実行 という流れです。 FireFoxでは表示されましたが、IE6では (2)のjsを読み込む前に(3)のFunction01が実行され、 「オブジェクトを指定してください」のエラーが表示されてしまいます。 よい方法がありましたら教えていただけますでしょうか? よろしくお願いします。

専門家に質問してみよう