javascript - 查看源书签 : Retrieve original source?

标签 javascript html bookmarks

我使用的小书签以这种方式获取当前页面的 src:

...
pre.appendChild(doc.createTextNode(document.documentElement.innerHTML));
...

发生的事情是,当查找 document.documentElement.innerHTML 时,这会转储出浏览器作为字符串产生的任何内容。 .

这与实际的原始来源不同,因为页面可能已被 javascript 等修改。

是否可以让小书签使用 XHR 或类似工具再次检索页面?

我的目标是拥有一个小书签,它将获取页面的新副本到一个 js 字符串中,我可以将其发送到 beautify.js清理它(它提供了清理 HTML、CSS 和 JS 的好工具),然后我填写一个 <pre>使用生成的美化源字符串,然后我将使用 prettify.js在。因为可以直接链接到这些项目的 js来 self 的书签的文件,这基本上是所有查看源代码书签的王者。

迄今为止,我一直在使用内置于 Google Chrome 和 Opera 等浏览器中的非常出色的工具,但自从我有了新的 iPad 后,我真的很喜欢在上面阅读代码,所以我试图将我的工作流程转移到那里。

最佳答案

这是一个使用 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;)try{b=c[a]();break}catch(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;)try{b=c[a]();break}catch(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);

关于javascript - 查看源书签 : Retrieve original source?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968680/

相关文章:

html - 定位元素的 IE/Edge 问题

html - 无法更改图像大小

c# - 使用 Open XML 和 C# 读取 Word 书签

javascript - Jquery 正在停止提交表单

javascript - 向 PHP 提交 <a> href

javascript - 在 create-react-app - 特定文件中禁用 eslint

javascript - Twitter Bootstrap Radio Toggle - 适用于除 IE9 之外的所有浏览器

iPhone 上 "Add to Home Screen"的 Javascript?

delphi - 如何使用书签和禁用控件

javascript - 将 div 定位到可见区域的中心