0

私は JavaScript に非常に慣れていないので、使用する Web サービスのブックマークレットを作成したいと考えています。任意のページからテキストを取得し、サービスのフォームをロードして、テキストをフォームのテキスト フィールドに投稿する必要があります。これまでのところ、私はこれを得ました:

// grab text
javascript:(function(){var t=window.getSelection?window.getSelection().toString():document.selection.createRange().text;t="You selected: "+t;alert(t);})()

//load form
document.onload=function(){window.location=%22http://www.streetmails.com/index.php%3Fc=mailing%26a=content%22})();

//paste text into form
window.onload=function%20D(a,b){c=b.split('|');d=false;for(q=0;q<c.length;q++){if(c[q]==a)d=true;}return%20d;}function%20E(){f0=document.forms[0];f0['subject'].value='news from London';f0['content'].value='<echo$_GET['t']?>';f0[''].value='Add%20a%20picture...';f0['topicId'].value='4';}E

手伝って頂けますか?私は検索し、試行錯誤を続けましたが、実行できません....よろしくお願いします!

4

1 に答える 1

0

ブックマークレットを使用してやろうとしていることを正確に行うことはできません。ブックマークレットを実行すると、現在の Web ページ内で Javascript が実行されます。ある Web ドメインの Web ページで実行されている Javascript は、別の Web ドメインのページと対話できません。document.onload通常、ブックマークレットをクリックする前に Web ページが既に読み込まれているため、ブックマークレットではほとんど機能しません。

テキストのあるページを「テキストページ」と呼びましょう。フォームのあるページを「フォームページ」と呼びましょう。Web フォームは、常に別のページまたはそれ自体に送信されます。フォームのaction値によって異なります。それをアクションページと呼びましょう。GETフォームは、または を介し​​て送信できますPOST

ブックマークレットで目標を達成するために、通常、ブックマークレットはテキスト ページにフォームを作成し、そのフォームをアクション ページに直接送信します。

アクション ページが GET (クエリ文字列値のみ) を受け入れる場合、それが最も簡単です。そのような多くの例については、こちらをご覧ください: https://www.squarefree.com/bookmarklets/search.html

アクション ページで POST が必要な場合は、Javascript を使用してフォームを作成する必要があるため、もう少し複雑です: http://www.google.com/search?q=javascript%20create%20form

アドオン、拡張機能、およびユーザー スクリプトは、現在のドメインでのみ動作することに限定されないため、必要なことをより直接的に実行するために使用できますが、もちろんプログラミングはより複雑になります。

于 2012-12-17T14:38:13.937 に答える