我对JavaScript非常陌生,我想为我使用的网络服务构建一个Bookmarklet。我需要从任何页面获取文本,加载服务的形式并将文本发布到表单的文本字段中。到目前为止我得到了这个:
// 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
你能帮帮我吗?我搜索并保持尝试和尝试但不能让它运行....
提前谢谢!
答案 0 :(得分:0)
使用书签无法完成您尝试做的事情。当您执行bookmarklet时,您正在当前网页中执行Javascript。在一个Web域的网页中运行的Javascript无法与来自其他Web域的页面进行交互。 document.onload
几乎不会在书签中工作,因为在您点击书签之前通常已经加载了网页。
让我们用“text-page”文本调用页面。让我们用“表单页面”的形式调用页面。 Web表单始终提交到另一个页面或自身。它取决于表单的action
值。让我们称之为动作页面。表格可以通过GET
或POST
提交。
要使用书签完成目标,通常所做的是书签将在文本页面上创建表单,然后将该表单直接提交到操作页面。
如果操作页面接受GET(仅查询字符串值),那么这是最简单的。在这里查看许多这样的例子:https://www.squarefree.com/bookmarklets/search.html
如果操作页面需要POST,则稍微复杂一点,因为您必须使用Javascript来创建表单:http://www.google.com/search?q=javascript%20create%20form
可以使用插件,扩展和用户脚本直接执行您想要的操作,因为它们不仅限于在当前域中运行,当然它们编程也更复杂。