查看源小书签:检索原始源?

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/… ...我今天学到的一件事是永远不要在书签中使用// 评论...我很惊讶我所有未转义的字符也都经过了。

以上是关于查看源小书签:检索原始源?的主要内容,如果未能解决你的问题,请参考以下文章

chrome书签保存位置怎么查看

Eclipse 添加书签

Eclipse 添加书签

XMPPFramework - XEP-0048:书签存储

使用VBA将Excel指定单元格数据字符串或者图表对象插入到Word模板指定书签处

移动到垃圾箱时的 URL 书签数据