我试图找出如何从一个巨大的html字符串中提取变量。简化示例如下:
更新以下是尝试使用下面列出的常用方法的屏幕截图。做一些像test['foo']
这样简单的事情是行不通的。这是从服务器返回的字符串,永远不会加载到实际的文档或窗口中。它只是一个保存在内存中的html对象。
https://jsfiddle.net/hvpvg3o4/
HTML
<div id="test"> <!-- div is just for jsfiddle -->
<script>
var test = { // <-- I WANT YOU!
foo: 'bar'
};
var somethingIDontWant = 1;
var iDontCareAboutYouEither = {
blag: 1 + 1
};
</script>
</div>
的JavaScript
var testTag = document.getElementById('test');
var scriptTag = testTag.getElementsByTagName('script');
// var testObj = ?;
我希望我可以从脚本标记中获取文本并运行eval或一些JSON.parse,但由于脚本标记中还有其他内容,我不能
有没有办法从脚本标签或某些花哨的正则表达式中提取变量?
答案 0 :(得分:0)
试试这个
console.log(test['foo'])
console.log(somethingIDontWant)
console.log(iDontCareAboutYouEither['blag'])
<div id="test">
<script>
var test = {
foo: 'bar'
};
var somethingIDontWant = 1;
var iDontCareAboutYouEither = {
blag: 1 + 1
};
</script>
</div>
答案 1 :(得分:0)
如果在全局范围内声明了所需的对象。只要声明脚本标记,就可以访问所需的对象。
示例:强>
<HTML>
<HEAD>
<SCRIPT>
var test = {
foo: 'bar'
};
var somethingIDontWant = 1;
var iDontCareAboutYouEither = {
blag: 1 + 1
};
</SCRIPT>
</HEAD>
<BODY>
<DIV>UGLY HTML</DIV>
<SCRIPT>
//INSERT CUSTOM SCRIPT FOR ACCESSING DESIRED OBJECT//
console.log(test)
</SCRIPT>
</BODY>
</HTML>
控制台可以仍访问var test ...即使在后面定义的脚本中... ...
<强>输出:强> {foo:'bar'}