こんな感じで、あってますか?
javascript: (function () { var d = document; var s = d.createElement('script'); s.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'; d.body.appendChild(s); $(function () { var out = ''; ("A").each(function() { var url = $(this).attr("href"); var txt = $(this).text(); out += url + "\t" + txt + "\n"; }); var ta = d.createElement('textarea'); ta.cols = 100; ta.rows = 100; ta.innerHTML = out; d.body.appendChild(ta); ta.select(); }); })();
- Google がホストしてくれてる jQuery を、最新の 1.11.1 にしました
- Firefox で試してみたら、非同期の document.write が怒られたので、DOM で要素を追加するようにしました
Bookmarklet を作るとき、インデントが無いと間違いやすいので、外部スクリプトファイルに書くとデバッグやメンテが楽チンです。
外部スクリプトは、ローカルに Apache を立てておくか、Github なんかを使う。
例えば、この回答のだと、以下のようなスクリプトを http://localhost/hoge.js でアクセスできるところに置いておきます。
(function () {
var d = document;
var s = d.createElement('script');
s.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js';
d.body.appendChild(s);
$(function () {
var out = '';
$("A").each(function() {
var url = $(this).attr("href");
var txt = $(this).text();
out += url + "\t" + txt + "\n";
});
var ta = d.createElement('textarea');
ta.cols = 100;
ta.rows = 100;
ta.innerHTML = out;
d.body.appendChild(ta);
ta.select();
});
})();
で、Bookmarklet はこんな感じ。
javascript:(function(src){var s=document.createElement('script');s.setAttribute('type','text/javascript');s.setAttribute('charset','UTF-8');s.setAttribute('src',src);document.body.appendChild(s);})('http://localhost/hoge.js');
最後の方にある URL を書き換えるだけです。
はてなには、Hatena::Let というサービスもあります。
先に書いたようなことを、まるっとWebサービスとして提供してくれています。
追記です。
jQuery を使う必要ないんじゃね? と思ったので、素の DOM だけで書いたのがこちらです。
javascript: (function () { var d = document; var lnks = document.getElementsByTagName("A"); var out = ''; for (var i = 0 ; i < lnks.length ; ++i) { var url = lnks[i].href; var txt = lnks[i].innerHTML; out += url + "\t" + txt + "\n"; } var ta = d.createElement('textarea'); ta.cols = 100; ta.rows = 100; ta.innerHTML = out; d.body.appendChild(ta); ta.select(); })();
a要素のテキストに改行がある場合も1行ずつ表示する、ということでしょうか?
今ある回答だと1行ずつではなく、改行されてしまいます。
例:こういうhtmlの時に、
<a href="url">内容
改行</a>
# 1行ずつ
url 内容 改行
# 改行残す
url 内容
改行