我有一个字符串.结局是不同的,例如index.php?test=1&list=UL或index.php?list=UL&more=1.我正在寻找的一件事是&list=.
如何匹配它,无论是在字符串的中间还是在结尾?到目前为止我已经有了[&|\?]list=.*?([&|$]),但这个([&|$])部分实际上并没有起作用; 我正在尝试使用它来匹配&字符串的任何一个或结尾,但是字符串部分的结尾不起作用,所以这个模式匹配第二个例子而不是第一个例子.
自从几天前发布了新的Greasemonkey 1.0以来,每个拥有jQuery的站点以及我在Greasemonkey脚本中使用jQuery的站点都没有正确运行我的脚本.我在我的GS脚本中使用@require的jQuery (使用元数据)与页面的jQuery冲突.这是由于新@grant代码.
我已经阅读了文档,但仍然不知道如何再次在沙箱中运行GS脚本; 唯一的选择似乎是授予对GS API的访问权限或将其授予无API并在没有任何安全限制的情况下运行脚本,当我设计了几十个GS脚本来运行时,这对我来说根本不起作用有安全限制,喜欢这样.
在 VS Code 的“调试控制台”中,我可以在调试 JavaScript 代码(包括运行我的函数)时在调试会话中间评估我的代码上的表达式。但是,async即使使用 IIFE 等,我似乎也无法运行函数。
我有以下代码:
const axios = require('axios');
async function getUrl() {
const response = await axios.get('http://example.com/');
return response.data;
}
async function main() {
const response = await getUrl();
console.log(response);
}
main();
Run Code Online (Sandbox Code Playgroud)
我async function main() {在行上设置了一个断点,然后我运行了 VS Code Debugger。然后我尝试运行getUrl在调试控制台不同的方式,如函数getUrl(),getUrl().then((data) => data)和(async () => getUrl())(),而这一切的回报Promise { pending })。main()返回相同的(如果在函数定义之后运行)。这些方法都不打印函数的返回值。
我也试过await getUrl(),它返回SyntaxError: await is only valid in async function …
javascript debugging asynchronous promise visual-studio-code
如何编辑Sublime Text 3中的构建系统,无论是本机还是通过Package Control安装的系统?例如,对于Sass Build包,它最近输出.map文件,所以我想配置它以便它停止这样做.
它似乎与Sublime Text 2不同,因为这些说明似乎不适用于我在Sublime Text 3文件夹中的内容.
我可以在每个项目的基础上更改它们吗?
如果我在YouTube网站上观看带有HTML5播放器的YouTube视频,我可以使用哪些JavaScript代码来获取视频的播放速度,并将其更改为其他设置?
具体来说,我需要这个代码用于我正在使用的Greasemonkey脚本,因此用户的浏览器将运行JavaScript代码.
我知道我可以做以下事情:
document.getElementsByClassName('html5-main-video')[0].playbackRate = 2.0
这会使播放速度加倍,但它也不会将YouTube播放器的"速度"字段的下拉框更改为"2.0",如果可能的话,我希望它能做到这一点.
我有一个 Jest 测试文件,如下所示:
// utils.test.js
let utils = require('./utils')
jest.mock('./utils')
test('print items', () => {
utils.printItems(['a'])
expect(utils.getImage).toHaveBeenLastCalledWith('a.png')
})
test('get image', () => {
utils = require.requireActual('./utils')
// `utils` is still mocked here for some reason.
expect(utils.getImage('note.png')).toBe('note')
})
Run Code Online (Sandbox Code Playgroud)
和这样的模拟:
// __mocks__/utils.js
const utils = require.requireActual('../utils');
utils.getImage = jest.fn(() => 'abc');
module.exports = utils;
Run Code Online (Sandbox Code Playgroud)
然而,正如您在第二次测试中的评论中看到的那样,utils仍然是模拟版本而不是模块的实际版本。这是为什么?我怎样才能让它成为实际版本,而不是模拟版本?
从去年的某个时候开始,YouTube就让每个页面实际上都没有加载一个全新的页面,但主要只是重新加载内容div#content.当您点击YouTube中的链接并看到页面顶部的红色加载栏时,您会注意到这一点.
我有一个Greasemonkey脚本修改了YouTube上的元素,但是现在YouTube没有重新加载整个页面,Greasemonkey脚本不再在每个"新"页面上触发.如何在我加载到YouTube上的每个"新"页面上激活Greasemonkey脚本?
我在这个Greasemonkey脚本中使用jQuery.我尝试使用类似的功能.on(),DOMNodeInserted但我找不到合适的组合使其正常工作.使用我一直使用的事件监听器,我最终会为每个页面加载运行我的脚本数百次,例如使用以下内容:
$('div#page').on('DOMNodeInserted', 'div#content', function() { });
我想到的另一个解决方案是在YouTube上加载所有链接,就像正常情况一样,没有他们正在做的新方法.
在Firefox控制台中,为了调试JavaScript错误消息,如果文件名在右侧太长,则行号似乎被隐藏.有没有办法解决这个问题,以便我可以看到行号?当我点击文件名时,它会将正确的文件打开到正确的行,所以很清楚它知道行号是什么,但它只是拒绝向我显示.
如果我这样做,然后0和2返回,分别为:
$html = $(document.createDocumentFragment());
$html.append('<a href="#">First link</a><a href="#">Second link</a>');
console.log($html.find('a').length);
console.log($html[0].querySelectorAll('a').length);
Run Code Online (Sandbox Code Playgroud)
我怎样才能使jQuery方法也能工作?基本上,我希望能够使用jQuery搜索文档片段,而不需要使用本机JavaScript DOM函数来回切换.
我知道要在某个提交时显示文件,我会使用git show <commit>:<file path>.但是如果文件在commit和HEAD之间重命名,这不起作用,那么有没有办法轻松地在文件上执行此操作而无需手动确定该提交的原始文件名是什么?
javascript ×8
greasemonkey ×3
jquery ×3
debugging ×2
firefox ×2
html ×2
youtube ×2
asynchronous ×1
build ×1
console ×1
filenames ×1
fragment ×1
git ×1
html5 ×1
jestjs ×1
mocking ×1
node.js ×1
promise ×1
regex ×1
sublimetext ×1
sublimetext3 ×1
system ×1
tampermonkey ×1
unit-testing ×1
video ×1