实际上我在网站上遇到了一些麻烦。 我正在尝试获取由javascript创建的div内容。 可悲的是,我无法弄清楚哪个Javascript实际上正在填充这个div。
我怎么能找到那个剧本?
<div id="messageContent" class="msg_content textBeefy textCenter">
<script>
<form action="http://s124-de.ogame.gameforge.com/game/index.php?page=messages&displayCategory=9&displayPage=1" name="delMsg" method="POST">
<input id="new_msg_count" type="hidden" value="0" />
<table id="mailz" class="list" cellspacing="0" cellpadding="0">
<tbody>
<tr class="first">
<tr id="TR30739146" class="entry trigger " />
<tr id="TR30738105" class="entry trigger alt" />
<tr id="TR30734795" class="entry trigger " />
<tr id="TR30734031" class="entry trigger alt" />
<tr id="TR30731272" class="entry trigger " />
<tr class="last" />
</tbody>
</table>
</form>
包括那些TR30739的表格......是由那个未知的脚本创建的。
我试图逐一查看我在firebug中找到的脚本,但我不确定我是否正确地调用它们,并且可能不会注意到它是否是我正在寻找的那个。
答案 0 :(得分:1)
您的问题归结为:我如何知道修改给定DOM元素的代码?
如果你有机会设置一个&#34; DOM断点&#34;你可以使用Chrome的开发工具(可能还有其他人)来做到这一点。在相关代码运行之前:
打开页面
打开开发工具
右键单击该表,然后单击“检查”
右键单击DOM窗口中的表格元素,然后选择 Break on ...&gt;子树修改
然后,当表格被修改后,Chrome将停止脚本并显示JavaScript代码中发生修改的位置。然后,如果你查看调用堆栈,你应该能够找到有问题的代码。
当然,技巧是在修改表运行的代码之前设置断点。
Chrome的另一个选择是使用旧的已弃用的变异事件。新的(并且在大多数方面更好)MutationObserver
回调不是与修改DOM的代码同步进行的,但旧的突变事件回调是:
打开空白标签
打开开发工具
在控制台中,键入(但不要按Enter键)
function setBreak() { var elm = document.getElementById("mailz"); if (!elm) { setTimeout(setBreak); return; } elm.addEventListener("DOMSubtreeModified", function() { debugger; }); } setBreak();
在地址栏中,粘贴网页的网址,然后尽快**切换回控制台并按Enter键
当然,如果您可以修改页面内容,只需将其放在script
元素中即可。
该代码查找mailz
元素,如果找到它,则在其上设置一个使用DOMSubtreeModified
语句的debugger;
侦听器。如果代码(还没有)看到该元素,它会安排自己在下次机会时再次运行。当事件触发时,debugger;
语句会告知Chrome停止代码并调出源窗格。然后,再次检查调用堆栈。