我想要做什么:我想从带有帖子的网页获取消息。 然后我想根据正则表达式规则将消息解析为字符串。 (例如,查找所有包含单词“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:文档未定义”错误。 如果我下载该页面,然后将我的脚本插入其中,当然,它可以工作。
问题:
- What am I doing wrong with my JavaScript?
- Is there a better way to parse the strings from web-pages using regexp?
附: 通常我可以找到所有问题的答案(有人已经问过并回答过),但现在我要么完全滥用 JS,要么谷歌搜索失败。
最佳答案
脚本正在页面加载之前加载并运行。这意味着您尝试读取的元素实际上尚未加载,因此当脚本尝试读取它时会返回错误。事实上,文档节点甚至还没有被加载,这就是产生
ReferenceError: document is not defined
的原因。 .有两种方法可以避免这种情况:插入
<script></script>
页面 HTML 底部的标签(这似乎不可行,因为您无权访问服务器),或者设置在文档加载时调用的函数(搜索“js 事件监听器”) .RegExp 可能是您最好的选择。
顺便说一句,JS 是您在加载页面后能够动态编辑页面的唯一方法。不过,也许可以尝试 GreaseMonkey 或 TamperMonkey,而不是 iMacro。
关于当脚本不是页面的一部分时,JavaScript "document is not defined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934469/