Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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 仅从包含整个网页的变量中删除脚本标记_Javascript_Jquery_Html - Fatal编程技术网

Javascript 仅从包含整个网页的变量中删除脚本标记

Javascript 仅从包含整个网页的变量中删除脚本标记,javascript,jquery,html,Javascript,Jquery,Html,我有一个网页,它通过对云数据库解决方案的API调用获取大部分内容。HTML页面相当简单,但通过许多JS/JQuery命令等注入了更多的数据 结果页面表示一个“引用”,我想将其保存回云数据库以供参考 我可以使用以下命令获取页面的当前状态并将其存储在变量中: var AVMI_thisPage = document.getElementsByTagName('html')[0].outerHTML; 我现在需要从变量中删除任何标记,以便将HTML重新导入到云数据库时,不会包含任何可能在有人打开页面

我有一个网页,它通过对云数据库解决方案的API调用获取大部分内容。HTML页面相当简单,但通过许多JS/JQuery命令等注入了更多的数据

结果页面表示一个“引用”,我想将其保存回云数据库以供参考

我可以使用以下命令获取页面的当前状态并将其存储在变量中:

var AVMI_thisPage = document.getElementsByTagName('html')[0].outerHTML;
我现在需要从变量中删除任何
标记,以便将HTML重新导入到云数据库时,不会包含任何可能在有人打开页面供参考时再次弄乱页面的JS

我应该能够将字符串推回数据库,但我需要去掉任何

我尝试过JQuery,但这似乎扼杀了HTML、HEAD和BODY标记

老实说,我没想到下面的代码会起作用。。。但是我试过了

例如

var AVMI_thisPage=document.getElementsByTagName('html')[0].outerHTML;
var AVMI_tree=$(“”+AVMI_thisPage+“”);
AVMI_tree.find('script').remove();
AVMI_thisPage=AVMI_tree.html();
有什么想法吗

更新-最终代码(包括BASE64编码和上载)

函数b64EncodeUnicode(str){
返回btoa(encodeURIComponent(str)。替换(/%([0-9A-F]{2})/g,函数(match,p1){
返回字符串.fromCharCode('0x'+p1);
}));
}
var htmlPage=$(“html”);
$(“脚本”,htmlPage).remove();
AVMI_thisPage=htmlPage.html();
AVMI_thisPageB64=B64编码Unicode(AVMI_thisPage);
var req=“”;
请求+=”;
req+=“”+AVMI quoteRID+“”;
req+=“”+AVMI_thisPageB64+“”;
请求+=”;
$.ajax({
类型:“POST”,
contentType:“text/xml”,
数据类型:“xml”,
processData:false,
url:“https://xxxx.xxxxxxxx.com/db/“+AVMI_Q_DBID+”?act=API_UploadFile”,
数据:req
})
.然后(函数(){
警告(“此报价的副本已保存到“硬拷贝附件”字段中。”);
window.close();
});
您可以执行以下操作:

$("script", AVMI_tree).remove();
但是请注意,您得到的是
documentElement
的OuterHTML,其中包括
Head
BODY
,并将它们放入
DIV
,这是非法的

你可以做:

var htmlPage = $("html");
$("script", htmlPage).remove();
AVMI_thisPage = htmlPage.html();
请注意,实际上从HTML页面而不是从复制的DOM中删除脚本并不重要,因为一旦加载的脚本被JVM处理和加载,从DOM中删除它也不重要:脚本将被加载并处于活动状态。

您可以:

$("script", AVMI_tree).remove();
但是请注意,您得到的是
documentElement
的OuterHTML,其中包括
Head
BODY
,并将它们放入
DIV
,这是非法的

你可以做:

var htmlPage = $("html");
$("script", htmlPage).remove();
AVMI_thisPage = htmlPage.html();

请注意,实际上从HTML页面而不是从复制的DOM中删除脚本并不重要,因为一旦加载的脚本被JVM处理和加载,从DOM中删除它并不重要:脚本将被加载并处于活动状态。

我不会质疑您这样进行“状态”保存的原因,但是下面是如何实现您想要的:

var regex = new RegExp('<script(.|\n)*</script>', 'g');
var noScript = AVMI_thisPage.replace(regex, '');

var regex=new RegExp(“我不想质疑您这样进行“状态”保存的原因,但是下面是如何实现您想要的:

var regex = new RegExp('<script(.|\n)*</script>', 'g');
var noScript = AVMI_thisPage.replace(regex, '');

var regex=new RegExp('答案行得通吗?答案行得通吗?谢谢,你的第二段代码帮助我以正确的方式构造了代码。现在一切正常。非常感谢!谢谢,你的第二段代码帮助我以正确的方式构造了代码。现在一切正常。非常感谢!