调试在弹出窗口中运行的JavaScript代码的最有效方法是什么?具体来说,我需要跟踪页面加载时发生的情况.
这适用于在LMS中运行的SCORM 1.2课程,它依赖于父窗口中的其他JavaScript对象,因此调试弹出窗口本身不起作用.
虽然我的大部分时间都在调试这些课程,但我可以将技术用于其他环境.
我可以使用浏览器中的调试器中的一个选项,它会暂停执行弹出页面的第一行JavaScript,就像我在那里放置一个断点一样.(我不能,或者至少不知道如何设置断点,直到页面开始之后)
编辑:
该debugger;语句有效,但仅适用于我控制的代码.我有时需要跟踪在某些弹出窗口打开时运行的JavaScript,并且无法添加断点,因为代码已经运行.
在尝试解析Groovy中的RSS提要时,我发现了一个使用通配符的GPath示例:
def text = """
<data>
<common-tables>
<table name="address"/>
<table name="phone"/>
</common-tables>
<special-tables>
<table name="person"/>
</special-tables>
<other-tables>
<table name="business"/>
</other-tables>
</data>
"""
def xml = new XmlParser().parse(new ByteArrayInputStream(text.getBytes()))
def tables = xml.'**'.table.findAll{ it.parent().name() ==
"special-tables" || it.parent().name
Run Code Online (Sandbox Code Playgroud)
(来自http://old.nabble.com/Q:-Avoiding-XPath---using-GPath-td19087210.html)
它似乎是对'spread-dot'操作符的有趣用法.我在Groovy网站,书籍等上找不到任何参考.
这是如何工作的,更重要的是,你是如何发现这一点的?那里有GPath'Rosetta Stone'的XPath吗?
我假设.NET DirectoryInfo和FileInfo对象类似于Java的java.io.File,即它们代表抽象路径,并不一定连接到现有的物理路径.
我可以用不同的方式做我正在尝试做的事情(清空文件夹并创建它,如果它不存在),但是我想知道为什么不这样做:
using System.IO;
namespace TestWipeFolder
{
internal class Program
{
private static void Main(string[] args)
{
var di = new DirectoryInfo(@"C:\foo\bar\baz");
if (di.Exists)
{
di.Delete(true);
}
// This doesn't work. C:\foo\bar is still there but it doesn't remake baz.
di.Create();
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:我重启后尝试了相同的代码,它工作正常.我仍然想知道Java File对象有什么相似之处,以及删除DirectoryInfo对象引用的文件夹是否可以搞砸了,但现在却处于后台.
场景:我正试图找出一个带有复杂API的现有HTML/JavaScript网站.它为window对象添加了几个属性.我想列举仅限未建宏或默认的属性(如排除window.location,window.parent等等)
是否有惯用的JavaScript方法来做到这一点?我想在空白的HTML页面中做一个浅拷贝,然后在枚举真实的那个时候以某种方式"减去"这些属性.
理想情况下,我想要一种方法将对象转储到控制台或监视器中,好像没有常规window属性存在,只有那些添加了JavaScript源.
在一些旧代码中,我找到了一个JavaScript文件,其中包含HTML注释的内容.
我理解在旧浏览器中这样做的原因,但不知道它是如何以任何方式有效的JavaScript.
表达<!--是undefined在Chrome和IE浏览器的控制台.
这是一个特殊情况,由解释器(http://javascript.about.com/library/blhtmcmt.htm)处理,仍然在ECMAScript标准中定义并在现代浏览器中工作,或者这些符号的组合是否恰巧产生某些东西那是undefined?
我把它读成"少于不减量"之类的东西,这似乎是没有操作数的荒谬.其中任何一个本身都会返回语法错误.
我知道"严格使用"之类的原因; 是有效的,但什么都不做,但我不知道这个代码实际上做了什么.
我可能会过度思考它,但想了解发生了什么