小编Dan*_*ner的帖子

很好地在gulp任务中抛出一个错误

我正在创建一个gulp任务,在某些情况下可能会失败.

gulp.task('favicon', function () {
  try {
    require('child_process').execSync('icotool --version');
  } catch( e ) {
    var err = new Error( 'Unix bash and icotool required for generating favicon' );
    throw err;
  }

  return gulp.src('', {read: false})
    .pipe(shell([
      './generate-favicon.sh'
    ]));
});
Run Code Online (Sandbox Code Playgroud)

当通过gulp运行我的任务并运行错误时,错误将显示相当丑陋.我想以某种方式呈现错误,例如jslint gulp-util's PluginError.

它实际上只是创建一个PluginError并抛出它,但这似乎不太正确.另一个不太好的解决方案是设置

err.showStack = false;
Run Code Online (Sandbox Code Playgroud)

至少有一个更好的错误输出.一个gulp.task.Error会很好.

javascript error-handling gulp

9
推荐指数
1
解决办法
6998
查看次数

内联svg元素的范围id ='x'和<use xlink:href ='#x'/>

svg我的文档中有多个内联时,我注意到即使在另一个内联中定义时,using <use xlink:href="#id"/>也会使用引用第一个已定义的元素。id="id"svg

我以某种方式假设id/ xlink:href范围只是/ 范围,svg但似乎是整个文档-在考虑它时确实有意义。

示例(第二个svg中的红色方块应为绿色):

svg {
  border: 1px solid gray;
}
Run Code Online (Sandbox Code Playgroud)
<html><head></head><body>

<svg width="50" height="50" viewBox="0 0 50 50">
  <defs>
    <rect id="foo" width="25" height="25" fill="red" />
  </defs>
  <use xlink:href="#foo" />
</svg>
<svg width="50" height="50" viewBox="0 0 50 50">
  <defs>
    <rect id="foo" width="25" height="25" fill="green" />
    <rect id="bar" width="25" height="25" fill="blue" />
  </defs>
  <use xlink:href="#bar" x=25 />
  <use xlink:href="#foo" /> <!-- Not green but red! -->
</svg>

</body></html> …
Run Code Online (Sandbox Code Playgroud)

html svg scope

6
推荐指数
0
解决办法
1609
查看次数

HTML 作为沙盒 iframe 的 `src` (IE11/Edge)

使用 HTML5,在 IE11/Edge 中,<iframe sandbox></iframe>除了使用srcurl之外,还有什么方法可以用 HTML填充沙盒 iframe ( )吗?我正在寻找一种srcdoc适用于所有其他现代浏览器的解决方案。

根据 Microsoft 的说法,src数据 URI一起使用不是一个选项因为它“不能用于[来]填充框架或 iframe 元素”。令人惊讶的是,这在 Edge 中对我有用,但仅适用于少于 4096 个字符的数据 URI。

我找到的所有其他选项,例如在iframe srcdoc 的替代方案中?Html 代码作为 IFRAME 源而不是 URL不适用于沙盒 iframe。

html iframe sandbox internet-explorer-11 microsoft-edge

5
推荐指数
1
解决办法
2757
查看次数

计算出的 DOM 节点/事件数与 Chrome 开发工具中的数字不一致

我注意到在我的网站上,Google Chrome 开发人员工具“性能监视器”显示的数字与通过getEventListeners()和确定的数字不同document.querySelectorAll('*')

正如您在下面的屏幕截图中看到的,控制台中计算的事件数量明显高于 Chrome 开发工具中规定的数量,而 DOM 节点的数量则明显较低。

知道如何解释吗?

function countDomEventListeners (elements) {
    return Array.from(elements).reduce((count, node) => {
        const listeners = getEventListeners(node)
        for (var eventName in listeners) {
            count += listeners[eventName].length
        }
        return count
    }, 0)
}
elements = document.querySelectorAll('*')
console.log('DOM Nodes:', elements.length)
console.log('DOM event listeners:', countDomEventListeners(elements))
Run Code Online (Sandbox Code Playgroud)

上述代码和 Chrome 性能监视器的结果

dom dom-events google-chrome-devtools

5
推荐指数
1
解决办法
718
查看次数

从重新定义的方法调用原始方法

我的问题基于主题 \xe2\x80\x9credefining a single ruby​​ method on a single instance with a lambda\xe2\x80\x9d 的答案

\n\n

如何重新定义方法并在新方法中调用原始定义?some_object\ 类的其他实例不应受到影响。

\n\n
def some_object.some_method\n  # call original `some_object.some_method` here\n  do_something_else\nend\n
Run Code Online (Sandbox Code Playgroud)\n

ruby monkeypatching

3
推荐指数
1
解决办法
2097
查看次数