0

有没有办法将我的域之外的弹出窗口的源保存为字符串,由以下方式打开:

window.open('html');

解决我的问题的另一种方法是将弹出窗口的输出定向到字符串中。我可以使用 chrome 的view-source:浏览器功能并弹出:

window.open('view-source:html');

由于我仅将其用于个人用途,因此它只能与 Chrome 兼容,如果这是唯一的方法。

4

2 回答 2

0

我建议在弹出窗口中加载您要打开的文档并提取它,innerHTML如下所示:

var popup = window.open('http://url.com');
// documentElement is the <html> element so you would get everything inside
var source = popup.document.documentElement.innerHTML;

这适用于 IE。我不确定 Chrome 对跨域弹出窗口的限制是什么,因此您可能需要检查您的本地设置。

于 2012-09-16T21:29:18.797 回答
0

如果您真的想构建一个小应用程序来完成您所描述的内容,请记住您可以右键单击并查看 Chrome 中的几乎任何页面源,包括选项卡、主页和其他一些地方。具有讽刺意味的是,查看源页面是我发现的唯一一个似乎无法找到源的页面,尽管我似乎发现了它的 URI 是什么:

chrome-devtools://devtools/devtools.html

但是什么都没有出现,除非我搜索那个 URI。这里有一些 URI 可以打开并尝试Right-Click + View Source看看你得到了什么:

* Regular tab (new)
* view-source:chrome://newtab/
* view-source:chrome://extensions-frame        // This has file handlers for extensions
* view-source:chrome://settings-frame/settings // Go to lines `2907`
* view-source:chrome://memory-redirect/
* view-source:chrome://downloads/
* view-source:chrome://settings-frame/options_bundle.js // This one has all kinds of good stuff
* view-source:chrome://resources/js/util.js 
* view-source:chrome://chrome/uber.js
* view-source:chrome://sync-internals/
* view-source:chrome://resources/js/cr/ui/array_data_model.js
* view-source:chrome://resources/js/cr/ui/list_item.js
* view-source:chrome://resources/js/cr/ui/tabs.js

您可以从中找到以下两个练习程序以及更多内容:

http://developer.chrome.com/extensions/tabs.html#samples

实时 HTTP 标头 headers.js - 下面显示的是如何将侦听器附加到 `window.onlaod` 事件,并在收到响应时收到通知,以便您可以获取源(而不是浏览器的解析和计算的源)。

window.addEventListener("load", function() {
    chrome.debugger.sendCommand({tabId:tabId}, "Network.enable");
    chrome.debugger.onEvent.addListener(onEvent);
});

} else if (message == "Network.responseReceived") {
    appendResponse(params.requestId, params.response);
}

下载选定的链接 - 从名为popup.js.

// Send back to the popup a sorted deduped list of valid link URLs on this page.
// The popup injects this script into all frames in the active tab.
chrome.extension.sendRequest(links);

// Download all visible checked links.
chrome.experimental.downloads.download({
    url: visibleLinks[i]},
    function(id) {
});

当然,这是一个名为SingleFile的程序,它作为扩展名。它似乎只是你所追求的(或者你可以只下载它单独组成部分):

SingleFile (c) 2011 吉尔达斯·洛莫

SingleFile是一个 Chrome 扩展程序,有助于将完整的页面归档到单个 HTML 文件中。

坏消息恐怕很多都是有用的,因为现在我已经查看了很多它和其他资源,我认为这或多或少只是内部浏览器。请注意示例应用程序,并记住有几种不同类型的应用程序具有不同的用途和访问级别。

不用说,我发现了很多东西,我不知道你想要、需要或关心多少。但我想既然你让我再次思考,我会继续与你分享我的发现。我认为您可以重新配置或使用几个示例应用程序来为您工作。祝你好运。


其他一些亮点:

于 2012-09-17T07:21:15.663 回答