当脚本不是页面的一部分时,JavaScript“文档未定义”错误

时间:2014-02-21 12:25:35

标签: javascript regex social-networking

我想做什么:我希望从网页上收到包含帖子的消息。 然后我想根据正则表达式规则将消息解析为字符串。 (例如,找到包含单词“bug”的所有句子)。

我已经无缘无故地选择了JavaScript - 所以如果有更好的方法 - 请非常友好地提及它。

我的所作所为:我打开URL,然后启动JavaScript,应该

var x=document.getElementById("post-59389006_839");
alert (x.value);
//or
var x=document.getElementById("bp_data-59389006_839").innerHTML;
alert(x);

...但它显示“ReferenceError:document not defined”错误。 如果我下载页面,然后将我的脚本插入其中,当然,它可以正常工作。

问题

  
      
  1. 我的JavaScript出错了什么?
  2.   
  3. 有没有更好的方法使用regexp从网页解析字符串?
  4.   

P.S。 通常我可以找到我所有问题的答案(有人已经问过并回答过他们),但现在我要么完全滥用JS,要么用谷歌搜索失败了。

1 个答案:

答案 0 :(得分:0)

  1. 正在加载脚本并在页面加载之前运行。这意味着您尝试读取的元素实际上并未加载,因此在脚本尝试从中读取时会返回错误。实际上,文档节点尚未加载,这就产生了ReferenceError: document is not defined

    有两种方法可以避免这种情况:在页面的HTML底部插入<script></script>标记(由于您无法访问服务器,因此似乎不可行),或者设置要在加载文档时调用的函数(搜索'js事件监听器')。

  2. RegExp可能是您最好的选择。

  3. 另外,JS是您加载后可能动态编辑页面的唯一方式。也许尝试GreaseMonkey或TamperMonkey而不是iMacro。