jus*_*eve 10 jquery bookmarklet google-docs
我正在尝试创建一个解析页面的书签,并通过我定义的表单将结果发送到googledocs电子表格.
脚本的相关部分是:
var form = document.createElement("form");
form.action = "http://spreadsheets.google.com/formResponse?formkey=Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq";
form.method = "POST";
form.id="ss-form";
form.innerHTML = ["<input id='entry_0' name = 'entry.0.single' value = '" + orderDate + "'/>", "<input name = 'entry.2.single' value = '" + email + "'/>", "<input name = 'entry.3.single' value = '" + customerID + "'/>", ].join("");
form.submit();
alert(form.innerHTML);
Run Code Online (Sandbox Code Playgroud)
//返回:
没有任何东西通过书签保存到表单 - 在我的书签的代码中捕获谷歌的响应的任何方式?(fwiw,我通过jQueryify注入了jQuery)
编辑:
Firebug的Net面板没有听到由bookmarklet触发的任何活动 - 我如何通过goolgle的viewform方法而不是formresponse来处理这个问题.
我想提交的表格位于:
http://spreadsheets.google.com/viewform?hl=en&formkey=dFd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA
我怎样才能将脚本值注入该表单然后再次提交...通过在被解析的页面上触发的bookmarklet中的脚本?
如果您已经使用了jquery,请尝试通过ajax($ .ajax)提交表单.您可以设置成功功能,当谷歌发回他们的回复时将调用该功能.
或者你应该能够使用firebug来查看google发回的响应.
具体来说,我认为你可以尝试类似以下内容:
$.ajax({
url: "http://spreadsheets.google.com/formResponse",
data: { formkey: "Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq", "entry.0.single": orderDate, "entry.2.single": email, "entry.3.single": customerID },
type: "POST",
dataType: "xml",
success: function(data, textStatus, XMLHttpRequest) {
console.log("success");
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error");
console.log(textStatus);
},
})
Run Code Online (Sandbox Code Playgroud)
我刚刚做了这样的事情。这是我的过程的分解。
我需要保留来自不同网页的报价列表,并为每个报价添加一些信息。
我的书签将动态生成一个 google 表单(我刚刚查看了我已经创建的真实 google 表单的来源),它会自动填充当前的 url、页面标题和当前选择的文本,然后,表格将被提交。
因为我需要手动添加信息,所以我故意没有包含至少一个必填字段,所以我收到了带有错误消息的谷歌表单(但已经填写了 url、标题和引用)。现在我可以手动添加我需要的所有其他信息并提交表单。
如果书签填写了所有必填字段,您将收到谷歌表单成功回复“谢谢!您的回复已被记录”。
我已经使用以下站点生成了一个使用 jQuery 的书签:http : //benalman.com/code/test/jquery-run-code-bookmarklet/ (我使用 jQuery 来获取附加信息和内容从网页)
为了能够正确使用该站点,您必须转义您的单行html(您可以使用此转义工具)
所需的步骤是:
所以在我的情况下:
1.我创建了一个表单,其中包含一个用于保存 url 的文本字段、另一个用于保存页面标题的文本字段、一个用于保存引用(所选文本)的段落文本。该表单还包括一些我手动填写的其他必填字段。
2.我准备了以下html:
<表单方法="POST"
action="https://spreadsheets.google.com/spreadsheet/formResponse?formkey=XYZXYZXYZXYZXYZXYZXYZ&ifq">
<input type="text" name="entry.0.single" value="" id="entry_0" />
<input type="text" name="entry.3.single" value="" id="entry_3" />
<textarea name="entry.2.single" id="entry_2"></textarea>
<input type="submit" name="submit" value="submit" />
</form>
(entry_0 - url,entry_3 - 页面标题,entry_2 - 引用)
3.排成一行并转义后。我使用了以下脚本:
frm = $(unescape('%3Cform%20action%3D%22https%3A//spreadsheets.google.com/spreadsheet/formResponse%3Fformkey%3DXYZXYZXYZXYZXYZXYZXYZ%26amp%3Bifq%22%20method%3D%22POST%22%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.0.single%22%20value%3D%22%22%20id%3D%22entry_0%22%20/%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.3.single%22%20value%3D%22%22%20id%3D%22entry_3%22%20/%3E%0A%3Ctextarea%20name%3D%22entry.2.single%22%20id%3D%22entry_2%22%3E%3C/textarea%3E%0A%3Cinput%20type%3D%22submit%22%20name%3D%22submit%22%20value%3D%22submit%22%20/%3E%0A%3C/form%3E'));
$(frm).children('#entry_0').attr('value',location.href);
$(frm).children('#entry_3').attr('value',$('title')[0].innerHTML);
$(frm).children('#entry_2').html(window.getSelection().toString());
$(frm).children('input[type=submit]').click()
Run Code Online (Sandbox Code Playgroud)
此方法已用铬测试过。祝你好运!