小编Mac*_*zyk的帖子

reCaptcha 小部件不会过期,并且永远不会调用过期的回调

我无法在我的 ajax 联系表单中集成 reCaptcha。它有效,仅在用户完成挑战后的前 2 分钟内有效。ReCaptcha 将在 2 分钟后过期。问题是小部件完好无损,没有像“会话已过期。再次完成挑战”。用户无法执行任何操作,只能重新加载页面。也不会调用过期回调(显然因为小部件不会过期)。

我可以在完成后设置一个 2 分钟的计时器来重置小部件。那会奏效,但有点麻烦,如果 Google 将来选择更改过期时间会怎样。任何想法为什么它不会过期?

我尝试了两种集成小部件的方法(自动和显式)

编辑:这是代码,我制作了一个小示例 html 文件并证明它不起作用。

<html>
<head></head>

<body>

        <div id="google-recaptcha-widget"></div>

<script>
        var expiredCallback = function() {
            alert('expired!');
        }

        var recaptchaLoad = function() {

                grecaptcha.render('google-recaptcha-widget', {
                        'sitekey' : 'mysitekey'
                        'expired-callback': expiredCallback
                });

        }

</script>

<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLoad&render=explicit" async defer></script>

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

javascript captcha recaptcha

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

Android平板电脑上的网络开发-没有开发工具?

假设您想在Android平板电脑上进行网络开发。有一些可用于代码编辑器等的选项。我无法解决的一件事是,Android版Chrome没有开发工具。它甚至不允许禁用缓存。是否有其他具有基本控制台并检查元素功能的浏览器?

请注意,它与远程调试没有任何关系。我正在寻找一种仅使用Android平板电脑进行开发的方法。

唯一想到的是BrowserStack,但是它会变得很慢,尤其是在移动设备上。

browser android google-chrome google-chrome-devtools

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

git 从存储库中提取目录 - 重命名之前的提交历史记录丢失

我想从存储库中提取一个目录,包括其所有提交历史记录。我遇到的问题是最终结果不包含移动/重命名文件之前的提交历史记录(这是在某个时刻完成的)。

例子:

  • 我想从项目存储库中提取 src/lib/features/TheLib 。

  • 这个目录“theLib”曾经在某个时候位于不同的位置,例如“src/util/lib/TheLib”。

  • 主存储库包含对文件所做的更改的完整历史记录,包括将库移动到存储库中的新位置之前的更改。

  • 如果我尝试将目录提取到新存储库中,我只能获得文件移动/重命名后的提交历史记录。

我已经尝试过这个[0]:

$ git filter-branch --prune-empty --subdirectory-filter src/lib/features/TheLib master
Run Code Online (Sandbox Code Playgroud)

还有这个[1]:

$ ./git-filter-repo --subdirectory-filter src/lib/features/TheLib
Run Code Online (Sandbox Code Playgroud)

这两种工具都给了我相同的结果。它几乎工作正常,除了重命名之前没有提交历史记录。

[0] https://docs.github.com/en/free-pro-team@latest/github/using-git/splitting-a-subfolder-out-into-a-new-repository

[1] https://github.com/newren/git-filter-repo/blob/main/Documentation/converting-from-filter-branch.md#cheat-sheet-conversion-of-examples-from-the-filter -分支联机帮助页

git

5
推荐指数
0
解决办法
369
查看次数

从命令行检查 Svelte 文件中的 TypeScript 类型

我运行tsc --noemit以确保代码库中没有类型错误。不幸的是,它似乎没有检查 .svelte 文件。

有办法让它发挥作用吗?我可以看到在 VS Code 中打开的 .svelte 文件中存在类型错误,因此我认为使用现有工具一定可以实现这一点。

另外,我正在使用官方的 @rollup/plugin-typescript 我知道还有 rollup-plugin-typescript2 可以检查构建上的类型,并且可能是替代解决方案,但我更喜欢不分别强制构建上的类型和检查类型就像我现在所做的那样。

typescript svelte

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

Svelte 仅支持 es6+ 语法。将“compilerOptions.target”设置为“es6”或更高版本

我一直在使用 Svelte、TypeScript 和 Rollup(让 TypeScript 处理转译)来针对 ES7。现在我正在开始一个新项目,需要以 ES5 为目标。

我注意到的第一件事是所有内容都被转译了,但组件仍然是类。那时我的组件中没有任何脚本。将脚本标签添加到 .svelte 文件后,我立即收到错误:

Svelte 仅支持 es6+ 语法。将“compilerOptions.target”设置为“es6”或更高版本

我知道我需要将 TS 目标设置为 ES6/ES7 并安装 Rollup Babel 插件来处理到 ES5 的转译。但为什么普通的 TypeScript 转译不起作用呢?为什么 Svelte 关心 TypeScript 目标?您可能认为 Svelte 文件在转译为 ES5 之前先转换为 TS,但似乎恰恰相反?

javascript rollup transpiler typescript svelte

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

为字符串联合类型中的每个类型添加前缀

是否可以从联合类型创建一个类型,其中联合的每个元素都将根据模式进行转换?我只需要添加一个前缀:

type EventNames = 'DragStart' | 'Drag' | 'DragStop'
type HandlerNames = Prefix<'on', EventNames> // 'onDragStart' | 'onDrag' | 'onDragStop'
Run Code Online (Sandbox Code Playgroud)

typescript

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

写入时的Vim自动命令 - 传递完整文件路径

我想在Vim中保存文件时执行bash脚本.问题是我不知道怎么办,或者是否可以将完整路径传递给文件,而不仅仅是文件名或打开的相对路径.

这是我正在使用的代码,它可以工作,但只有相对路径,这对我来说是无用的.

autocmd BufWritePost * !~/.config/nvim/scripts/on_save.sh <afile> 
Run Code Online (Sandbox Code Playgroud)

有没有办法将完整的文件路径传递给bash脚本?

vim bash

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

Svelte - 监视组件外部组件属性的更改(访问器)

是否可以在组件外部监视组件属性的更改?

我尝试过使用该$: 声明,但它似乎不起作用(除了第一次 - 检测组件何时安装)。

即这是属性从内部改变的组件

<script>
  export let title = 'Settings';

  setTimeout(() => {
    title = 'Settings - Test';
  }, 2000);

//
</script>

<svelte:options accessors={true}/>

Run Code Online (Sandbox Code Playgroud)

以及包含它的组件:

<script>
    import SettingsPage from './Settings.svelte';
    
    let page;   
    let title = '';
    
    $: {
        if (typeof page !== 'undefined') {
            title = page.title;
        }
    }
    
    $: title2 = typeof page !== 'undefined' ? page.title : '';
        
</script>

After 2 seconds, the titles should change to "Settings - test" (it does not work).

<h3>title: …
Run Code Online (Sandbox Code Playgroud)

javascript svelte svelte-3

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

在 Woocommerce 3+ 中检查产品价格是否含税

如何以编程方式检查产品的价格是否含税?我检查了 WC_Product 参考,但找不到类似的内容。

php wordpress woocommerce price tax

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

Svelte - 将变量从父组件传递到其所有子组件

我需要将数据从父组件传递到所有子组件,可能是链下的 3-4 级。为此使用事件并不是一个非常优雅的解决方案。

有没有一种方法可以定义组件的所有子组件都可以访问的全局变量?

我也不想使用参数,因为会有很多重复。

javascript svelte

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

获取一个非常大的字符串中所有出现的子字符串

像indexOf之类的东西,除了我需要找到所有索引。如果有 .indexOf 和 ,lastIndexOf ,是否应该有一个函数来获取所有索引出现的情况?我找不到。

请注意,该字符串非常大,大小约为 1MB,因此我需要最快的解决方案。

为了澄清这一点,我需要获取子字符串在字符串中出现的所有位置。

例如

var str = "foo bar foo bar"; //the real string is 1MB
var indexes = str.indexOfAll('foo'); //the function I need
console.log(indexes); //should print [0,8];
Run Code Online (Sandbox Code Playgroud)

我想到的一件事是在重复循环中使用indexOf,查找第一个单词,在索引处剪切字符串,然后再次使用indexOf,依此类推,直到找不到任何内容。我不确定性能(剪切和重新创建大字符串)。

javascript

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

禁用taphold默认事件,跨设备

我正在努力禁用默认的taphold浏览器事件.我在Google上找到的任何内容都没有提供任何帮助.我只有Android 4.4.4移动版和Chrome开发工具进行测试.我尝试过CSS修复,例如webkit-touch-callout和其他,但显然它们不适用于Android,也不适用于Chrome开发工具.我也试过检测右键,(e.button == 2),它不起作用.

我提出了一个解决方案,但它解决了一个问题并创造了另一个问题.我只想对选定的锚点进行"长按"事件的自定义操作,我不希望出现默认弹出窗口(在新选项卡中打开,复制链接地址等).这就是我所做的:

var timer;
var tap;

$("body").on("touchstart", my_selector, function(e) {
    e.preventDefault();
    timer = setTimeout(function() {
        alert('taphold!');
        tap=false;
    },500);
});

$("body").on("touchend", my_selector, function() {
    if(tap) alert('tap');
    else tap=true;
    clearTimeout(timer);
});
Run Code Online (Sandbox Code Playgroud)

它成功禁用了默认的taphold事件,并且没有出现上下文菜单.但是它也会禁用有用的事件,例如滑动.链接位于垂直菜单中,菜单高于屏幕,因此用户必须滚动它.如果他试图滚动,从锚点开始,它将不会滚动,它会提示"点击!"

任何想法我如何禁用taphold默认或如何修复此代码,以便它只禁用点击事件并启用默认滑动事件?

编辑:现在我考虑设置超时,如果指针位于相同的位置,让我们说100毫秒,然后防止默认操作.但是e.preventDefault(); 在setTimeout回调中不起作用.

所以现在我只是问一个最简单的例子.我可以在经过一定时间后阻止默认操作(触摸仍然存在时).

这是我整个小提琴的问题.http://jsfiddle.net/56Szw/593/ 这不是我的代码,我从http://www.gianlucaguarini.com/blog/detecting-the-tap-event-on-a-mobile-touch-获得了这个代码.设备使用的JavaScript /

请注意,在向上和向下滑动框时,滚动不起作用.

javascript mobile jquery android touch

0
推荐指数
1
解决办法
2065
查看次数