And*_*ton 1 html javascript ajax greasemonkey
我想重新加载页面,以便它不会导致整页刷新的效果,例如在页面选项卡上显示"正在加载...".
这是我到目前为止的代码.我的理论是,我可以body使用<frame>已更新网站的包装版本覆盖该部分,获得通过GM_xmlhttpRequest.
setInterval(reload, 10000);
function reload() {
GM_xmlhttpRequest({method: 'GET',
url: location.href,
onload: function(responseDetails) {
document.body.innerHTML =
'<frame>\n'
+ responseDetails.responseText
+ '</frame>\n';
}});
}
Run Code Online (Sandbox Code Playgroud)
在stackoverflow.com上使用Firebug进行测试时,我发现此脚本更新了body ,就像我执行了整页刷新一样,没有副作用.好极了!神秘的是,这些<frame>标签无处可寻.
我现在所做的就是重新加载页面,但我有两个问题:
<frame>标签body?到目前为止,我已经收集了Cleiton,Havenard和Henrik的答案中的元素.我尝试通过发送header: { 'Cookie': document.cookie }的数据中的条目发送cookie GM_xmlhttpRequest.这发送了一些但不是所有的cookie.事实证明,如果我打开的Firefox的第三方Cookie,然后我会得到必要的额外的饼干(.ASPXAUTH,ASP.NET_SessionId,和user),但是这是一个坏主意.
Hav*_*ard 10
document.body.innerHTML =
responseDetails.responseText.match(/<body>([\s\S]*)<\/body>/i)[1];Run Code Online (Sandbox Code Playgroud)
更新:对于具有属性的<body>:
document.body.innerHTML =
responseDetails.responseText.match(/<body[^>]*>([\s\S]*)<\/body>/i)[1];Run Code Online (Sandbox Code Playgroud)