如何从html blob

时间:2017-11-15 04:25:24

标签: javascript jquery html parsing

我试图找出如何从一个巨大的html字符串中提取变量。简化示例如下:

更新以下是尝试使用下面列出的常用方法的屏幕截图。做一些像test['foo']这样简单的事情是行不通的。这是从服务器返回的字符串,永远不会加载到实际的文档或窗口中。它只是一个保存在内存中的html对象。

enter image description here

enter image description here

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,但由于脚本标记中还有其他内容,我不能

有没有办法从脚本标签或某些花哨的正则表达式中提取变量?

2 个答案:

答案 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'}