javascript - GM_xmlhttpRequest 的响应文本缺少一些 HTML

标签 javascript xmlhttprequest greasemonkey gm-xmlhttprequest

如果我去this Google Maps page ,一些 HTML 在查看源代码中丢失,但在 Firebug 中显示。

同样,当将相同的 URL 传递给我的函数时,以下 HTML 不会显示在 responseText 中,但当我打开页面时,它会显示在 Firebug 中。

<a id="mapmaker-link" class="kd-button mini left" style="" href="https://www.google.com/mapmaker?ll=41.06877,-112.047203&spn=0.038696,0.132093&t=h&z=14&vpsrc=0&q=1093+W+3090+S,Syracuse,+UT&utm_medium=website&utm_campaign=relatedproducts_maps&utm_source=mapseditbutton_normal">

这是我正在使用的函数:

function updateMap(url) {
     GM_xmlhttpRequest(
    {
        method: 'GET',
        url: url,
        onload: function(resp) {
            var ll = resp.responseText.split("mapmaker?")[1];
            ll     = ll.split("&")[0];
            document.getElementById('googlemap').href = url+"&"+ll;
        }
    });
}


我已将示例 responseText 值放置在 pastebin.com/Tt8nrzG8 .

最佳答案

响应“缺少”HTML,因为被调用的页面通过 AJAX 加载该 HTML(以及几乎所有页面的内容)。
GM_xmlhttpRequest(以及所有其他当前 AJAX 方法)仅获取给定页面的静态源。此类 XHR 请求无法处理所请求页面的 javascript,就像浏览器在您浏览该页面时所做的那样。

事实上,如果你保存 that sample responseText, that you linked,作为 HTML 文件;你会看到它看起来像这样:

The OP's sample response

<小时/>

参见"How to get an AJAX get-request to wait for the page to be rendered before returning a response?" ,对于同一类型的问题。但请注意,答案建议您使用API(如果可用)。

所以,使用 the Google Maps API获取您想要的 URL 纬度/经度。

或者,最简单的方法仍然是让脚本也在 Google map 页面上运行,并使用您的特殊 URL 参数对链接进行一次性缩放 - 就像我在 your previous question 上推荐的那样。 。这样做的另一个优点是,在您真正决定点击 Google map 链接之前,无需调用 Google。

如果您确实选择 iframe 方法(再次强调,不推荐用于任何 Google 网站),请注意,您将需要 adjust the URL to tell Google to allow iframing纬度/经度信息将位于页面的不同部分。

关于javascript - GM_xmlhttpRequest 的响应文本缺少一些 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913817/

相关文章:

javascript - 如何在 native Safari 应用程序扩展中加载页面后向选项卡发送消息

javascript - 存储点击值以供稍后使用

javascript - 如何在 Jinja2 中插入仪表 JavaScript 插件并设置/更新其参数?

javascript - 重复 XMLHttpRequest 请求

javascript - 油猴Javascript : how to loop through all text and change only whole words?

javascript - 如何从 Greasemonkey 脚本中删除此 CSS 规则?

javascript - 添加带有数据的新 div 并在单击时删除它们

javascript - 如何从函数内部更新成功事件的全局变量(轮询)?

sql-server - msxml XMLHTTPRequest 和超时

javascript - 如何让 Greasemonkey 单击延迟后才出现的按钮?