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