查看源小书签:检索原始源?
Posted
技术标签:
【中文标题】查看源小书签:检索原始源?【英文标题】:View Source bookmarklet: Retrieve original source? 【发布时间】:2012-04-15 15:44:36 【问题描述】:我使用的小书签是这样抓取当前页面的src的:
...
pre.appendChild(doc.createTextNode(document.documentElement.innerhtml));
...
当查找document.documentElement.innerHTML
时,这会转储浏览器生成的字符串作为字符串。
这与实际的原始来源不同,例如,该页面可能已被 javascript 修改。
是否可以让小书签再次使用 XHR 或其他方式检索页面?
我的目标是有一个书签,它将获取页面的新副本到 js 字符串中,我可以将其发送到 beautify.js
进行清理(它提供了清理 HTML、CSS 和 JS 的好工具) ,然后我用生成的美化源字符串填充<pre>
,然后我将使用prettify.js
。因为可以从我的书签中直接链接到这些各自项目的js
文件,所以这基本上是所有查看源书签的王者。
迄今为止,我一直在使用 Google Chrome 和 Opera 等浏览器中内置的非常出色的工具,但自从有了新的 iPad,我真的很喜欢阅读上面的代码,所以我正试图将我的工作流程转移到那里。
【问题讨论】:
听起来很有趣,你有我可以看看的存储库或要点吗? 还没有,一旦我有一些很棒的工作,我可能会在 github 上设置一些东西。 @VictorBjelkholm 你可以在这里看到我今天早些时候的工作***.com/questions/9966382/… 【参考方案1】:这是一个使用 XHR 的示例:
var factories=[
function()return new ActiveXObject("Microsoft.XMLHTTP"), // for old IE
function()return new XMLHttpRequest()
];
function XHRMaker()
var xhr=false,
i=factories.length;
while (0<=--i)
try
xhr=factories[i]();
break;
catch (e)
return xhr;
function getSource(cb)
var xhr=XHRMaker();
if (false===xhr) return false;
xhr.open('GET',window.location.href,true);
xhr.onreadystatechange=function()
if (4!==xhr.readyState) return;
delete xhr.onreadystatechange;
cb(xhr.responseText);
;
xhr.send(null);
getSource(function(html)
alert(html);
);
使用闭包编译器,编译为:
var c=[function()return new ActiveXObject("Microsoft.XMLHTTP"),function()return new XMLHttpRequest];function d()for(var b=!1,a=c.length;0<=--a;)tryb=c[a]();breakcatch(e)return b(function(b)var a=d();if(!1===a)return!1;a.open("GET",window.location.href,!0);a.onreadystatechange=function()4===a.readyState&&(delete a.onreadystatechange,b(a.responseText));a.send(null))(function(b)alert(b));
或作为书签代码:
javascript:(function()var%20c=[function()return%20new%20ActiveXObject("Microsoft.XMLHTTP"),function()return%20new%20XMLHttpRequest];function%20d()for(var%20b=!1,a=c.length;0<=--a;)tryb=c[a]();breakcatch(e)return%20b(function(b)var%20a=d();if(!1===a)return!1;a.open("GET",window.location.href,!0);a.onreadystatechange=function()4===a.readyState&&(delete%20a.onreadystatechange,b(a.responseText));a.send(null))(function(b)alert(b));());void(0);
【讨论】:
谢谢。我认为我可以使用document.URL
而不是window.location.href
?
是的,你可以:***.com/questions/5388036/…
...我今天学到的一件事是永远不要在书签中使用//
评论...我很惊讶我所有未转义的字符也都经过了。以上是关于查看源小书签:检索原始源?的主要内容,如果未能解决你的问题,请参考以下文章