3

クリックするとリンクを提案するブックマークレットに取り組んでいます。これらのリンクのいずれかをクリックした後、誰かが戻るボタンを押すと、ブックマークレットが提案するリンクのリストに戻ることが意図されていると思います。

ただし、どの Web ページでも実行できるブックマークレットでこれを可能にする方法はありません。提案されたリンクをクリックしてから戻ると、ブックマークレットの Javascript を一切使用せずに元のページが表示され、通常はページの上部にリンクのリストが表示されます。

もちろん、ユーザーはブックマークレットをもう一度クリックすることもできますが、それが必要ない場合は便利です。私がホストするWebサイトを介してリダイレクトする以外に、これを行う方法はありますか(これはIMOの恐ろしい解決策です)?

4

4 に答える 4

2

いくつかの html を文字列に構成し、それを表示するためにwindow.locationとの組み合わせを使用するブックマークレットはどうですか?document.write()

var links = "<html><head><title>Suggested links</title></head><body>";
links += "<p><a href='http://example.com/'>Example Suggested Link</a></p>";
links += "</body></html>";
window.location = 'javascript:document.write("' + links + '");' ;

正しい文字列が表示されるように、引用には注意する必要がありますが、簡単なテストの後、戻るボタンを尊重しているようです...

サンプルは次のとおりです: http://jsbin.com/ebuko4 - Firefox では動作しますが、他の場所ではテストしていません...

コードは次のとおりです。

<html>
  <head>
    <title>JS Bin Sample bookmarklet</title>
  </head>
  <body>
    <p><a href='javascript:(function(){ var l = "<html><head><title>Does this bookmarklet work?</title></head><body><p>"+ "<a href=\"http://example.com/\">Suggested link: Example.com</a></p>" + "<p><a href=\"http://example.net/\">Suggested link: Example.net</a></p>" + "</bo" + "dy></html>"; window.location = "javascript:document.write(%27" + l + "%27);"; })()'>Sample Bookmarklet - drag me to your toolbar</a></p>
  </body>
</html>
于 2010-12-13T14:35:11.977 に答える
1

いいえ、これを行う方法があるとは思いません。私の知る限り、ページの読み込み時にブックマークレット JavaScript を自動的にトリガーすることはできません。実行するには、ユーザーがクリックする必要があります。

この機能が必要な場合は、代わりにブラウザー拡張機能を開発する必要があります。これにより、たとえば、提案されたリンクを表示できるブラウザ ウィンドウに新しい固定フレームを追加できます。Mozilla/Firefox は、すべて JavaScript と XUL (Mozilla の GUI マークアップ言語) ベースであるため、非常に簡単に開発できます。ここにたくさんのチュートリアルとドキュメントがあります: https://developer.mozilla.org/en/extensions

私は経験がありませんが、IE 用の拡張機能を開発することもできます。この質問への回答IE 用のプラグインはどのように開発しますか? 始めるのに役立つかもしれません。

編集:可能な回避策を考えました: ブックマークレットは、現在のウィンドウに新しいページを作成し、提案されたリンクをコンテナーに入れ、元のページを iframe にレンダリングすることができます。提案されたリンクのいずれかをクリックすると、iframe が更新されます。実際に試してみないと、実際にどのような問題が発生するのか (たとえば、SO のような一部のサイトは iframe でレンダリングされず、一部のリンクは target="_blank" を持ち、新しいウィンドウで開く)、またはこの形式があなたにとって望ましいでしょう。

于 2010-12-07T12:18:45.613 に答える
0

ユーザーが提案されたリンクのいずれかをたどったときにデータを転送できる場合 (たとえば、リンクの URL に #info=... を追加する)、ユーザーはブックマークレットを再度アクティブにすることでリンクのリストを戻すことができます。ブラウザに戻ります。

ブックマークレットがツールバーにある場合、これはワンクリック操作になります。しかし、1 つの新しい問題が発生する可能性があります。それは、ブックマークレットが前のページの結果を表示しようとしているときに、新しい結果を取得する方法です!

于 2010-12-20T09:37:18.530 に答える
0

ブラウザがページを変更すると、ブックマークレットは制御できなくなります。したがって、1 つの解決策は、ページを変更しないことです。

提案されたリンクをフレームまたは iframe で開くことができます。推奨リンクのリストを再度表示する方法がある限り、必要に応じてフレームをウィンドウ全体に表示することができます。

これは、stackoverflow では機能しないことに注意してください。彼らはフレーム grrr のブレイク アウト。

少し関連する例を次に示します: http://hwi.ath.cx/joeys_bookmarklets.html#splitpreview

于 2010-12-20T09:12:40.623 に答える