小编cla*_*ney的帖子

如何调试外部评估脚本

具体的例子:haystack.js从剧本你有多大的草堆?

我已经搜索了答案,一切似乎都指向使用//# sourceURL=name.js评论。然而,如何实现这一点的机制让我望而却步(也许我只是很密集)。

每个人总是指向Debugging JavaScript,但演示坏了(同源错误)。其他常见示例不提供使用此类外部脚本的洞察力。

我已经尝试使用 Live Edit 插入 sourceURL 注释,但到目前为止 eval 脚本从未出现在 Sources 选项卡中。

有人可以指导我完成此任务的步骤吗?

更新:这已被证明是一项有趣而烦人的努力。这个特定的站点使任务变得不必要地困难,并具有以下复杂性:

  • haystack.js 脚本包括document.write()语句(加载使用的其他脚本)。这些必须在重新加载脚本之前删除,否则 DOM 将被清除。

  • 作者在代码上使用了一种奇怪的反引号密码形式。因此,代码修改(包括sourceURL)必须在消除混淆之后,但在 eval 发生之前进行。

我提出了一个部分解决方案。将 jQuery 加载到页面后,我运行此脚本:

$.ajax({
  url: '/js/haystack.js',
  dataType: 'text'
}).done(function(data) {
    // Remove document.write() statements and append sourceURL comment after obfuscation is removed
    var refactored = data.replace(/return d/, "return d.replace(/document\.write[^;]+;/g, '') + '\\n//# sourceURL=haystack.js\\n';");
    $('head').append('<script type="text/javascript">' + refactored + '</script>');
});
Run Code Online (Sandbox Code Playgroud)

脚本后的 DevTools 源标签

现在 haystack.js 出现在 Sources …

javascript google-chrome-devtools

4
推荐指数
1
解决办法
5214
查看次数

带有变量和乘法的 CSS Calc

我正在使用 Nu Html Checker 验证我的 CSS:

https://validator.w3.org/nu/

考虑以下 CSS:

:root {
  --target-size: 48px;
}

.test1 {
  flex: 0 0 calc(var(--target-size) + 1px);
}

.test2 {
  min-height: calc(var(--target-size) - 0.5rem);
}

.test3 {
  flex: 0 0 calc(320px - 3 * var(--target-size));
}
Run Code Online (Sandbox Code Playgroud)

验证器不报告.test1和错误.test2

然而,对于 .test3,验证器会报告此错误:

错误:flex:类型不兼容。

我知道 CSS 规则规定,对于乘法,至少一个参数必须是<number>. 我不认为这违反了。我尝试将乘法嵌套在另一个 calc() 中,但错误仍然存​​在。

知道该规则有什么问题以及如何纠正吗?

css

4
推荐指数
1
解决办法
3540
查看次数

具有多个缓存的服务工作者

有许多示例用于使用类似于以下内容的单个缓存初始化服务工作者:

let cacheName = 'myCacheName-v1';
let urlsToCache = ['url1', 'url2', url3'];

self.addEventListener('install', function (event) {
  event.waitUntil(
    caches.open(cacheName).then(function (cache) {
      return cache.addAll(urlsToCache);
    }).then(function () {
      return this.skipWaiting();
    })
  );
});
Run Code Online (Sandbox Code Playgroud)

我希望在我的服务工作者上初始化多个缓存.动机是根据变化趋势对资产进行分组(例如,静态应用数据与css,javascript等).使用多个缓存,我可以将单个缓存(通过版本化的缓存名称)更新为缓存更改中的文件.理想情况下,我希望设置类似于以下的结构:

let appCaches = [{
    name: 'core-00001',
    urls: [
      './',
      './index.html', etc...
    ]
  },
  {
    name: 'data-00001',
    urls: [
      './data1.json',
      './data2.json', etc...
    ]
  },
  etc...
];
Run Code Online (Sandbox Code Playgroud)

到目前为止,我最好的尝试类似于:

self.addEventListener('install', function (event) {
  appCaches.forEach(function (appCache) {
    event.waitUntil(
      caches.open(appCache.name).then(function (cache) {
        return cache.addAll(appCache.urls);
      }));
  });
  self.skipWaiting();
});
Run Code Online (Sandbox Code Playgroud)

这种方法似乎有效.但是,我仍然是服务工人和承诺的新手.有些东西告诉我,这种方法有一个陷阱,我太缺乏经验,无法识别.有没有更好的方法来实现这个?

javascript service-worker

3
推荐指数
2
解决办法
1300
查看次数

如何在C#中获取/设置文件夹类型

Windows定义了五种文件夹类型(常规项目,文档,图片,音乐和视频).在Windows资源管理器中,您可以通过右键单击文件夹并选择属性 - >自定义 - >优化此文件夹来获取/设置类型.我正在寻找一种在C#中获取/设置文件夹类型的方法.我已经搜索过这个,但我不能使用正确的术语.

有人能指出我正确的方向吗?

更新:感谢大家的见解!认为这很简单 - 显然不是.

很奇怪.我可以选择没有desktop.ini的文件夹.我可以更改该文件夹的属性,选择文件夹类型,单击"应用",查看是否已创建desktop.ini,并相应地查看文件夹视图更改.但是,我可以删除desktop.ini,文件夹类型仍然存在.通过Explorer重启.通过Windows重启.

关于可能的影子副本,我找不到支持这一点的证据.除C:外,我的所有驱动器都关闭了系统保护功能.使用ShadowExplorer,我找不到任何desktop.ini文件的引用.

百思不得其解......

c# windows desktop.ini

2
推荐指数
1
解决办法
1837
查看次数