标签:javascript dom html5 html
我有一个令人费解的情况(至少令我感到困惑).
有一个由外部网站创建的外部文件“file.js”:
http://external-website.com/file.js
它里面有这个代码:
var sText= "dynamic value here";
document.write(sText);
所以基本上这个网站每N分钟重新创建一个这个文件,为人们提供了使用这个js文件中的值来合并的方法
<script src="http://external-website.com/file.js"></script>
但
我只需要变量sText.我不希望这个脚本执行document.write(sText),因为这会弄乱我的DOM(如果我理解正确的话).理想情况下,如果这个文件有一行var sText =“动态值在这里”,我会很高兴;
有没有办法使用这个JS,但不要让它做document.write?
解决方法:
您可以将脚本解析为AST,然后从变量定义节点中提取字符串.见this jsfiddle.
首先,您可以像这样定义外部脚本文件:
<script type="text/x-ignore_me" src="http://external-website.com/file.js"></script>
浏览器不应识别text / x-ignore_me类型.因此,浏览器忽略该脚本.现在我们可以访问脚本的内容并使用Uglify.js解析器解析它.
var code = $("script[type='text/x-ignore_me']").text();
var ast = UglifyJS.parse(code);
var sTextContent = ast.body[0].definitions[0].value.print_to_string();
alert( sTextContent );
您可以在sTextContent变量中找到sText的内容(在您的示例中为“动态值”).
作为参考,您可以找到Uglify.js解析器文档here.
标签:javascript,dom,html5,html 来源: https://codeday.me/bug/20190709/1410020.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。