我正在http://www.debuggex.com上建立一个正则表达式帮手.我想要显示的细节数量要求我编写自己的解析器和匹配器.
为了确保我的解析器和匹配器正常工作,我已经为正则表达式的Javascript风格编写了自己的单元测试,但这些仅涵盖我所知道的边缘情况.我想使用标准测试套件,最近指向http://hg.ecmascript.org/tests/test262/summary,我将使用它.
我的问题是,我在哪里可以找到其他正则表达式的测试套件?我想在将来支持其他口味.我无法通过谷歌搜索找到任何东西("测试"污染了正则表达式测试人员的结果).我正在寻找语言python,php,perl,java,ruby和.net的测试套件.
我想保存DOM的html字符串,然后将其恢复为完全相同.代码看起来像这样:
var stringified = document.documentElement.innerHTML
// later, after serializing and deserializing
document.documentElement.innerHTML = stringified
Run Code Online (Sandbox Code Playgroud)
这在一切都很完美时起作用,但是当DOM不符合w3c时,就会出现问题.第一行工作正常,stringified完全匹配DOM.但是当我从(非w3c兼容)恢复时stringified,浏览器会做一些魔术并且生成的DOM与最初的DOM不同.
例如,如果我的原始DOM看起来像
<p><div></div></p>
Run Code Online (Sandbox Code Playgroud)
那么最终的DOM会是这样的
<p></p><div></div><p></p>
Run Code Online (Sandbox Code Playgroud)
因为div元素不允许在p元素内部.有没有什么方法可以让浏览器使用与页面加载相同的html解析并按原样接受损坏的html?
为什么html首先被破坏了?DOM不受我控制.
这是一个显示行为http://jsfiddle.net/b2x7rnfm/5/的jsfiddle .打开你的控制台.
<body>
<div id="asdf"><p id="outer"></p></div>
<script type="text/javascript">
var insert = document.createElement('div');
var text = document.createTextNode('ladygaga');
insert.appendChild(text);
document.getElementById('outer').appendChild(insert);
var e = document.getElementById('asdf')
console.log(e.innerHTML);
e.innerHTML = e.innerHTML;
console.log(e.innerHTML); // This is different than 2 lines above!!
</script>
</body>
Run Code Online (Sandbox Code Playgroud) 我正在构建一个firefox扩展,它创建了几个隐藏的浏览器元素.
我想addProgressListener()为我加载的页面处理onLocationChange.但是,我的处理程序并不总是被调用.
更具体地说,这就是我正在做的事情:
src属性onLocationChange浏览器元素的进度监听器loadURIWithFlags()使用所需的网址调用并发布数据我希望每次在4之后调用处理程序,但有时它不会(虽然它似乎卡在同一页面上).
有趣的是,如果我将3和4包裹在内部,setTimeout(..., 5000);它每次都有效.
我也试过改变一些步骤,但它没有任何效果.
更大的图片:当浏览器contentDocument是新加载的页面(重定向后)时,我希望得到可靠的通知.有一个更好的方法吗?
更新:我已经在mozilla的bug跟踪器上打开了一个错误,其中有一个显示此行为的最小xulrunner应用程序,以防任何人想要仔细查看:https://bugzilla.mozilla.org/show_bug.cgi?id = 941414
我有一个有针对性的树,我想得到它的大小.我没有关于它的深度或节点分布的信息.有两个主要障碍:
1)树很大(〜数十亿个节点)
2)边缘遍历很昂贵.
我是否可以使用统计方法快速估算其大小(节点数)并使用有界误差?不幸的是,谷歌搜索只会产生精确计数算法,这些算法在这些限制条件下表现不佳.
奖金
如果我放松从树到DAG(有向无环图)的约束,我可以得到它的大小和唯一路径的数量吗?例如,这个DAG(每个边缘指向下)

有19个节点(大小)和23个路径(4个额外的路径,因为红色边缘为其目标节点提供了1个路径,另外3个路径指向其目标节点的子节点)
我尝试过的事情
对于树案例,我正在考虑以下内容:
amounts = []
def estimateHelper(node):
amounts[node.depth].push(len(node.children))
for each child in small random sample of node.children:
estimateHelper(child)
def estimate(root):
estimateHelper(root)
reach = 0
for (j = len(amounts) - 1; j >= 0; --j):
avgChildrenPerNodeAtThisLevel = avg(amounts[j])
reach = avgChildrenPerNodeAtThisLevel + avgChildrenPerNodeAtThisLevel * reach
return reach
Run Code Online (Sandbox Code Playgroud)
它基本上计算树的最深节点处的"范围",然后将其传播回上面的级别以找到该级别的范围.它一直这样做,直到它最终找到树的根"到达".我不确定我是否在上述算法中对节点的均匀分布做出任何假设.重申一下,我不知道给定树会有什么样的分布.
假设它有效,这也解决了DAG的"路径".一旦你拥有了所有的"路径",我就会想到使用生日悖论的倒数来计算出有多少个唯一的节点.生日悖论回答"我们需要多少天(路径)才能选择,直到我们遇到重复的一天,并且在一年中有365个独特的日子可能会有一些概率".所以我们继续尝试随机路径(天),直到我们遇到一个重复的节点,我们重复几次以找到该事件的概率,然后我们将其插入生日悖论以找到唯一节点的数量(唯一的天数)年).但请注意,生日悖论也会假设一致性.
这些都不是非常严谨.什么是理想的东西,它给我一个误差界限的估计,和一篇描述该算法足够严谨的论文.任何指向正确方向的人都非常感激.
我有以下代码:
<div class="blah" style="clip-path: url(#clippath)"></div>
<svg width="0" height="0"><defs><clipPath id="clippath">
<rect x="0" y="0" height="100" width="100"></rect>
</clipPath></defs></svg>
Run Code Online (Sandbox Code Playgroud)
这正确地将blahdiv 剪辑为100x100平方.但是,如果我使用JavaScript将svg添加到DOM(而不是从页面加载那里),它就不再起作用了.具体来说,我想基于我的应用程序中发生的事件创建动态剪辑路径.
我究竟做错了什么?这只需要在Firefox中工作(遗憾的是不支持clip-path: polygon(...))
javascript ×4
firefox ×3
html ×2
.net ×1
algorithm ×1
css ×1
dom ×1
duplicates ×1
java ×1
jquery ×1
php ×1
python ×1
regex ×1
settimeout ×1
statistics ×1
svg ×1
tree ×1
xul ×1