Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在main.js中使用DOM功能和jQuery?_Javascript_Jquery_Firefox Addon_Firefox Addon Sdk - Fatal编程技术网

Javascript 如何在main.js中使用DOM功能和jQuery?

Javascript 如何在main.js中使用DOM功能和jQuery?,javascript,jquery,firefox-addon,firefox-addon-sdk,Javascript,Jquery,Firefox Addon,Firefox Addon Sdk,我正在使用Mozilla的add-on SDK开发一个附加组件,我遇到了对一些文本进行HTML编码的需要(将符号和特殊字符替换为它们的&;等价物)。您可以使用DOM在JavaScript中通过调用document.createElement()并向其中添加文本(激发浏览器对文本进行编码)来实现这一点。问题是,在特权代码(main.js)中没有DOM,因此无法访问这些功能,甚至无法使用像jQuery这样的库。这里有最佳实践吗?如何访问通常需要来自main.js的全局文档对象的功能?如果我理解

我正在使用Mozilla的add-on SDK开发一个附加组件,我遇到了对一些文本进行HTML编码的需要(将符号和特殊字符替换为它们的
&;
等价物)。您可以使用DOM在JavaScript中通过调用
document.createElement()
并向其中添加文本(激发浏览器对文本进行编码)来实现这一点。问题是,在特权代码(
main.js
)中没有DOM,因此无法访问这些功能,甚至无法使用像jQuery这样的库。这里有最佳实践吗?如何访问通常需要来自
main.js
的全局
文档
对象的功能?

如果我理解正确,您希望用实际字符替换HTML实体(
&;
及类似内容)。到目前为止,您的解决方案是:

var text=“foo&;bar”;
var-element=document.createElement('foo');
element.innerHTML=文本;
text=element.textContent;
您可以使用它,而不是使用文档的DOM(并冒着无意中运行某些脚本的风险),它将解析文本而不会产生任何副作用。不幸的是,从
main.js
访问
DOMParser
,除了代码简单之外,还需要:

var text=“foo&;bar”;
var{Cc,Ci}=require(“chrome”);
var parser=Cc[“@mozilla.org/xmlextas/domparser;1”]
.createInstance(Ci.nsIDOMParser);
text=parser.parseFromString(text,“text/html”).documentElement.textContent;

您有全局“转义”功能吗?这就把“&”变成了“%26”@canuckistani:我认为问题在于解析HTML实体——OP所指的解决方案是
innerHTML
(意味着一个巨大的安全漏洞)。我实际上想换一种方式,从一个包含特殊字符的字符串开始,用HTML实体替换它们。我的问题原来是一个与此无关的unicode问题,但这仍然是我提出的问题的一个很好的解决方案:)