当脚本不是页面的一部分时,JavaScript "document is not defined"错误

标签 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:文档未定义”错误。 如果我下载该页面,然后将我的脚本插入其中,当然,它可以工作。

问题:

  1. What am I doing wrong with my JavaScript?
  2. Is there a better way to parse the strings from web-pages using regexp?

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

最佳答案

  1. 脚本正在页面加载之前加载并运行。这意味着您尝试读取的元素实际上尚未加载,因此当脚本尝试读取它时会返回错误。事实上,文档节点甚至还没有被加载,这就是产生 ReferenceError: document is not defined 的原因。 .

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

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

顺便说一句,JS 是您在加载页面后能够动态编辑页面的唯一方法。不过,也许可以尝试 GreaseMonkey 或 TamperMonkey,而不是 iMacro。

关于当脚本不是页面的一部分时,JavaScript "document is not defined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934469/

相关文章:

javascript - 在经典的 asp 中加载窗口

javascript正则表达式替换html字符

regex - R删除unicode换行符

javascript - 将社交媒体网络共享按钮集成到 Highcharts。

php - 社交网络 PHP/MySQL 结构

javascript - 在某些操作或断开连接时识别用户

javascript - div 颜色在 .animate() 中没有改变

php - 为什么\\。平等的\。在preg_replace?

javascript - 如何在我的网站上添加 Instagram 关注按钮?

c# - 将值从 View 传递到 Controller - MVC