【发布时间】:2016-08-12 04:15:12
【问题描述】:
所以我正在运行一个数据收集项目,通过 chrome 扩展将 html 表单注入第三方网站,该扩展指示用户描述他们看到的数据并将其提交到我的服务器。
然而,出于某种奇怪的原因,每当用户单击“提交”按钮将表单内容发送到后台页面(并从那里发送到服务器)时,底层页面就会重新加载,不仅如此,而且重新加载后,我注入的表单内容会显示在 url 中。这是一种奇怪的行为。
我不知道这是否是我的代码中的某些东西,或者即使它是底层网页代码中的某些东西(也许它重新定义了chrome.runtime.sendMessage 或某种反扩展技术?!!?)。如果可能的话,我真的很想停止这种行为......有人有什么想法吗?
我的代码的相关部分,精简了一点:
var cururl = window.location.href
var codestring= "[A HTML FORM TO INJECT]"
var raformvalues = {};
function codeValues() {
$.each($('#mainCoding').serializeArray(), function(i, field) {
raformvalues[field.name] = field.value;
});
}
function sendValues() {
let pageinfo = {"page": document.documentElement.outerHTML,
"url": cururl,
"title": document.title,
"timestamp": String(Date.now())};
let tosend = $.extend({"type": "doctype"}, pageinfo, raformvalues);
chrome.runtime.sendMessage(tosend);
chrome.storage.local.set({'lasturl': pageinfo.url});
$("#pgcodediv").empty();
location.href = cururl; // note: I added this line to try to stop the reloading and url/changing behavior. behavior is the same with and without it.
}
function appendCodingInfo() {
$("#headerID").append(codestring);
$( ":checkbox, :radio" ).click( codeValues );
$( ":text" ).change( codeValues );
$( "#codingsubmit" ).click(sendValues);
}
appendCodingInfo()
当用户点击提交按钮时(当然是#codingsubmit),消息被传递,后台页面正确处理,但页面自动刷新,raformvalues 的内容显示在 URL 中刷新的页面(即,当我从控制台调用 window.location.href 时,该对象的内容显示为获取请求的参数,即 http://url?prop=value&prop2=value2 - 不知道为什么。
【问题讨论】:
标签: javascript google-chrome google-chrome-extension