剪辑到Onenote的快照与我在浏览器中看到的不完全相同

JunjieLi

您好,我现在正在使用Onenote API发送当前网页的快照:

http://msdn.microsoft.com/zh-CN/library/office/dn575431(v=office.15).aspx

http://msdn.microsoft.com/zh-cn/library/office/dn575438(v=office.15).aspx#sectionSection4

发布多部分内容时,我将HTML内容放在“ MyAppHtmlId”部分中:

<img data-render-src="name:MyAppHtmlId" alt="a cool image" width="500"/>

HTML内容是通过以下方式获得的:

document.documentElement.outerHTML;

问题在于有时保存在Onenote中的快照与我在浏览器中看到的不完全相同。但是,当我转向使用Chrome扩展程序“ OneNote Clipper”来测试同一页面时,它会很好地工作。(示例页面:https : //stackoverflow.com/

是我使用了错误的Javascript代码来获取HTML内容,还是我错过了有关Onenote API的其他东西?

Eleazar Vega-Gonzalez占位符图像

在将结果document.documentElement.outerHTML发送到服务之前,您需要几种方法来对其进行修改

  1. 确保包括DOCTYPE。如果您不包括DOCTYPE数据,则屏幕截图将以怪癖模式呈现,这很容易导致屏幕截图不理想。这里有一篇文章解释了如何生成正确的DOCTYPE字符串:使用Javascript将HTML的DocType获取为字符串我将它们的代码合并到下面的示例中。

  2. 由于屏幕快照将仅使用DOM生成而无需了解原始URL,因此如果不存在基本标记,您将希望添加一个基本标记。这样可以确保正确理解用于资源的任何相对路径。

  3. 您可能需要删除所有noscript标记。由于将在不运行Javascript的情况下呈现有效负载,因此将呈现存在的任何noscript标记,这可能会导致不需要的内容显示在屏幕快照中。

这是一些示例代码,应在最小化当前页面DOM的更改的同时实现这些目标:

function getDom() {
    // Get the DOCTYPE
    var node = document.doctype;
    var doctype = "<!DOCTYPE "
        + node.name
        + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '')
        + (!node.publicId && node.systemId ? ' SYSTEM' : '')
        + (node.systemId ? ' "' + node.systemId + '"' : '')
        + '>';

    // Before we get the document's outerHTML, create a base tag if one doesn't exist
    if (!document.getElementsByTagName('base').length) {
        var baseUrl = document.location.href;
        baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

        var base = document.createElement('base');
        base.href = baseUrl;
        // The base tag is the first child of head to ensure we don't misload links/scripts in the head
        document.head.insertBefore(base, document.head.firstChild);
    }

    // Store the outerHTML with DOCTYPE
    var html = doctype + document.documentElement.outerHTML;

    // Remove the text for any noscript elements from html
    var noscriptElements = document.getElementsByTagName('noscript');
    for (var i = 0; i < noscriptElements.length; i++) {
        html = html.replace(noscriptElements[i].outerHTML, '');
    }

    return html;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结果与我在 Web 浏览器中看到的不同

来自分类Dev

两个完全相同的USB闪存驱动器(棒)不完全相同

来自分类Dev

Mockito说论点不完全相同,但是呢?

来自分类Dev

通过不完全相同的ID查找元素

来自分类Dev

表和Div的100%宽度不完全相同

来自分类Dev

增强精神:类似排列,但不完全相同

来自分类Dev

是!隐式强制,Boolean()不完全相同吗?

来自分类Dev

两条完全相同的SVG路径,绘制方式不完全相同

来自分类Dev

我输入的URL如何导致我在浏览器中看到的最终内容?

来自分类Dev

我只想在浏览器的URL行中看到我的URL

来自分类Dev

当我从浏览器检查器中看到时,ngRepeat div 被注释掉

来自分类Dev

如何设置Android WebView以使其与Android浏览器完全相同?

来自分类Dev

可以在控制台中看到 JSON 数据,无法渲染到浏览器

来自分类Dev

Eclipse无法识别或读取.dat文件,即使我可以在包浏览器中看到它

来自分类Dev

即使我在浏览器控制台中看到,也无法按className抓取元素

来自分类Dev

Selenium认为文本框是隐藏的,即使我可以在浏览器中看到它

来自分类Dev

最大递归与sys.getrecursionlimit()所声称的不完全相同。怎么会?

来自分类Dev

为什么覆盖方法与不覆盖方法并不完全相同?

来自分类Dev

BOOST_STRONG_TYPEDEF差不多,但不完全相同

来自分类Dev

perl regex匹配n位数字,但前提是它们不完全相同

来自分类Dev

不完全相同的字符匹配仍然有效

来自分类Dev

如何在SQL Server中删除不完全相同的重复项

来自分类Dev

键不完全相同时,如何访问字典值?

来自分类Dev

MySQL-按相似的行分组(不完全相同)

来自分类Dev

使用收集整理R-属性中的数据集不完全相同

来自分类Dev

web2py:不完全相同的字段约束

来自分类Dev

在Android上使用GLES20.glReadPixels时,它返回的数据与实时预览不完全相同

来自分类Dev

使用两个不同的排序条件对对象数组进行排序的对象不完全相同

来自分类Dev

自适应表,在台式机上工作,但在移动设备上不完全相同

Related 相关文章

  1. 1

    结果与我在 Web 浏览器中看到的不同

  2. 2

    两个完全相同的USB闪存驱动器(棒)不完全相同

  3. 3

    Mockito说论点不完全相同,但是呢?

  4. 4

    通过不完全相同的ID查找元素

  5. 5

    表和Div的100%宽度不完全相同

  6. 6

    增强精神:类似排列,但不完全相同

  7. 7

    是!隐式强制,Boolean()不完全相同吗?

  8. 8

    两条完全相同的SVG路径,绘制方式不完全相同

  9. 9

    我输入的URL如何导致我在浏览器中看到的最终内容?

  10. 10

    我只想在浏览器的URL行中看到我的URL

  11. 11

    当我从浏览器检查器中看到时,ngRepeat div 被注释掉

  12. 12

    如何设置Android WebView以使其与Android浏览器完全相同?

  13. 13

    可以在控制台中看到 JSON 数据,无法渲染到浏览器

  14. 14

    Eclipse无法识别或读取.dat文件,即使我可以在包浏览器中看到它

  15. 15

    即使我在浏览器控制台中看到,也无法按className抓取元素

  16. 16

    Selenium认为文本框是隐藏的,即使我可以在浏览器中看到它

  17. 17

    最大递归与sys.getrecursionlimit()所声称的不完全相同。怎么会?

  18. 18

    为什么覆盖方法与不覆盖方法并不完全相同?

  19. 19

    BOOST_STRONG_TYPEDEF差不多,但不完全相同

  20. 20

    perl regex匹配n位数字,但前提是它们不完全相同

  21. 21

    不完全相同的字符匹配仍然有效

  22. 22

    如何在SQL Server中删除不完全相同的重复项

  23. 23

    键不完全相同时,如何访问字典值?

  24. 24

    MySQL-按相似的行分组(不完全相同)

  25. 25

    使用收集整理R-属性中的数据集不完全相同

  26. 26

    web2py:不完全相同的字段约束

  27. 27

    在Android上使用GLES20.glReadPixels时,它返回的数据与实时预览不完全相同

  28. 28

    使用两个不同的排序条件对对象数组进行排序的对象不完全相同

  29. 29

    自适应表,在台式机上工作,但在移动设备上不完全相同

热门标签

归档