質問失礼します。
現在JavaScriptを用いてページ上の選択した部分のソースを取得して、あるページに送るというBookmarkletを作成しようとしているのですが、Firefox3上で動作するものが出来ません。
例えば
javascript:(function(){javascript:window.open('http://localhost:3000/webscraps/new?title='+enco …})()
これならIE上で思い通りの動作をするのですが、Firefoxでは動きません。
javascript:(function(){javascript:window.open('http://localhost:3000/webscraps/new?title='+enco …})()
これではFirefox3上で動くのですが、選択範囲ではなくページ全体のソースが送られます。
どなたか分かる方がいらっしゃいましたら、「Firefox3上で選択部分のソースを取得するBookmarklet」を教えて頂けませんか?
No.5ベストアンサー
- 回答日時:
すでに書かれていますが
> javascript:(function(){javascript:
この書き方がNGです。
> ページ上の選択した部分のソースを取得して
とのことですが、
<p>あいうえお<span>かきくけこ</span>さしすせそ</p>
というソースがあったとして、ブラウザ表示上で「えおかきく」の部分が選択された状態の時のソースというのは
「えお<span>かきく」
ということでしょうか?
それはたぶん、すべてのブラウザでできないと思います。
var sel=getSelection();
if(sel!=undefiend && sel.rangeCount>0)
var range=sel.getRagneAt(0);
これで選択範囲が取得できるので、(私はwindow.getSlection()を使っていますが、、、)
https://developer.mozilla.org/en/DOM/range
このあたりを参考にしてみてください。
単純にrange.toString()でいいかもしれませんし、
range.cloneContents()でdocumentFragmentを生成してinnerHTMLなどを何かしないといけないかもしれません。
documentFragmentにはinnerHTMLがないので、<div>を生成してコピーしてみました。
javascript:(function(){sel=getSelection();
if(sel && sel.rangeCount>0){
range=sel.getRangeAt(0);
d=document.createElement('div');d.appendChild(range.cloneContents());
alert(d.innerHTML);}})()
長いので改行しています。
cloneContents()の仕様上、ValidなHTML(XHTML)に書き換えられますので、
選択した範囲のHTMLとは異なりますが、ご参考まで。
教えていただいたコードで思い通りの動作をさせることができました!
しかし、自分の勉強不足も身に染みたのでこれを機にjavascriptの知識をもう少し付けようと思います^^;
御回答本当にありがとうございました!
No.6
- 回答日時:
連続失礼します。
> ANo.1お礼
> <a href="http://www~">リンク</a>が取得できるといったものです)
もしhref属性だけを取りたいのであれば、
innerHTMLではなくcloneContentsでdocumentFragmentを生成した後、
DOMツリーからaエレメントを探し、getAttribute('href')などで取得した方がいいかもしれません。
No.4
- 回答日時:
>javascript:(function(){javascript:window.open('
http://localhost:3000/webscraps/new?title='+enco …})()これってもしかして<a href="javascript:~
で始めてますか?
そしてfunction(){javascript:~て記述があります
これも変!クラス定義みたいになってるし
もしやるなら
<a href="#" onClick="window.open(~
だけでよいのでは?
javascriptの記述を全く理解できていないのにやろうとしていたもので^^;
これから知識を付けていこうかと思います
御回答ありがとうございました!
No.3
- 回答日時:
document.getSelection()で、選択部分の「文字列」は取得できますが、対応する部分のHTMLソースを得る方法は無さそうです。
http://developer.mozilla.org/en/DOM_Client_Objec …
No.1
- 回答日時:
<html>
<body>
<input type="text" id="a">
<div>
マウスで範囲を選択します<br>
いやいや色々な表現方法があるものです<br>
どう利用するか、どう感じたかは人それぞれ<br>
function(){ javascript: ~ ←これはまずい。
123 456 789<br>
</div>
<script>
document.getElementById('a').value = decodeURIComponent(location.search) ;
document.body.onmouseup = chk;
function chk(){
var key = getSelectText();
if(key=='') return;
window.open('test.html?title='+encodeURIComponent(key));
}
function getSelectText(){
return (/*@cc_on!@*/false)?((document.selection.type == 'Text')? document.selection.createRange().text:''):window.getSelection().getRangeAt(0);
}
</script>
</body>
早速の御返事ありがとうございます。
ただ、自分の知識不足で使い方を過ってるだけかもしれませんが、少々望んでいるものと違いまして・・・
まず、FirefoxのURLを入力する欄で実行したいためhtmlではなくjavascript:~を用いて一行で実行したいこと。
テキストを取得するのではなく、HTMLソースを取得したいこと。(ページ上の"リンク"を選択した後にjavascriptを実行すると、<a href="http://www~">リンク</a>が取得できるといったものです)
もし自分の勘違いであった場合は申し訳ありません。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでalertの文字列をコ...
-
<body>内のJavascriptでCSSを読...
-
【javascript クロスブラウザ...
-
季節毎に自動的に変化するホー...
-
OnMouseDownでNetscapeがアボート
-
変数の代入値を外部の.txtファ...
-
JavaScript で指定した月日に別...
-
<a href="#" …>の意味を教えて...
-
ハイパーリンクに下線を表示す...
-
bodyにidをつける理由は何ですか?
-
別ページのインラインフレーム...
-
複数のJavascriptを1つのscrip...
-
別ファイルのfunctionの読み込み方
-
Javascriptでのツリーメニュー...
-
イベントハンドラを使わずに実...
-
スクロールバーのスクロール量...
-
小窓を表示する時に、必ず右上...
-
親タブから子タブ開いて親タブ...
-
Dreamweaver で 外部JSを読み込...
-
window.openで同画面遷移しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでalertの文字列をコ...
-
onLoadをbodyタグ以外で使用する
-
【javascript クロスブラウザ...
-
変数の代入値を外部の.txtファ...
-
特定のページから移動してきた...
-
JavaScript で指定した月日に別...
-
javascriptとphpの変数のやり取り
-
日替わりメッセージの表示
-
javascriptにてonclickを無効
-
指定の年月日時にcssを自動で切...
-
Bookmarkletに関して
-
1 ~ Nまでの整数の総和(1+2+3....
-
htmlソースの取得方法
-
javascriptでのHPデザインの振...
-
Jquery a href="javascript:名...
-
何歳何ヶ月何日の表示されるソ...
-
<body>内のJavascriptでCSSを読...
-
「オブジェクトを指定してくだ...
-
セキュリティ保護の警告が出な...
-
イベントハンドラに処理を追加...
おすすめ情報