加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

将HTML转换为数据:使用JavaScript的text/html链接

发布时间:2020-12-14 21:35:48 所属栏目:资源 来源:网络整理
导读:这是我的HTML: aView it in your browser/adiv id="html" h1Doggies/h1 p style="color:blue;"Kitties/p/div 如何使用JavaScript来使我的链接的href属性指向一个base64编码的网页,其源代码是div#html的innerHTML? 我基本上想做同样的转换完成here(选中bas
这是我的HTML:
<a>View it in your browser</a>
<div id="html">
    <h1>Doggies</h1>
    <p style="color:blue;">Kitties</p>
</div>

如何使用JavaScript来使我的链接的href属性指向一个base64编码的网页,其源代码是div#html的innerHTML?

我基本上想做同样的转换完成here(选中base64复选框),除了JavaScript。

解决方法

数据URI的特征

具有MIME类型text / html的data-URI必须采用以下格式之一:

data:text/html,<HTML HERE>
data:text/html;charset=UTF-8,<HTML HERE>

Base-64编码不是必需的。如果您的代码包含非ASCII字符,例如éé,charset = UTF-8必须添加。

必须转义以下字符:

## – Firefox和Opera将此字符解释为散列的标记(如location.hash中所示)。
>% – 此字符用于转义字符。逃避这个角色,以确保没有副作用发生。

此外,如果要将代码嵌入到锚标签中,还应转义以下字符:

>“和/或’ – 报价标记属性的值。
>& – &符号用于标记HTML实体。
><和>不必在HTML属性内转义。但是,如果您要将链接嵌入到HTML中,那么这些链接也应该被转义(<和>)
JavaScript实现

如果您不介意数据URI的大小,最简单的方法是使用encodeURIComponent

var html = document.getElementById("html").innerHTML;
var dataURI = 'data:text/html,' + encodeURIComponent(html);

如果大小很重要,您最好将所有连续的空格区分开(这可以安全地完成,除非HTML包含< pre>元素/ style)。然后,只能替换有意义的字符:

var html = document.getElementById("html").innerHTML;
html = html.replace(/s{2,}/g,'')   // <-- Replace all consecutive spaces,2+
           .replace(/%/g,'%25')     // <-- Escape %
           .replace(/&/g,'%26')     // <-- Escape &
           .replace(/#/g,'%23')     // <-- Escape #
           .replace(/"/g,'%22')     // <-- Escape "
           .replace(/'/g,'%27');    // <-- Escape ' (to be 100% safe)
var dataURI = 'data:text/html;charset=UTF-8,' + html;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读