Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 电子-另一个程序正在使用此文件?_Javascript_Html_Json_Electron_Google Earth - Fatal编程技术网

Javascript 电子-另一个程序正在使用此文件?

Javascript 电子-另一个程序正在使用此文件?,javascript,html,json,electron,google-earth,Javascript,Html,Json,Electron,Google Earth,我创建了一个搜索栏,搜索JSON,并通过“打开链接”按钮以html格式显示信息。这些文件是本地kmz/kml文件,当用户单击按钮时,这些文件会在Google Earth中打开 为什么当我点击“打开”按钮时,Google Earth会加载它,然后我在我的应用程序中收到一个弹出窗口,上面写着“另一个程序正在使用此文件”,然后在我重新启动应用程序之前不会清除 $(document).ready(function() { $('#myInput').keyup(function() {

我创建了一个搜索栏,搜索JSON,并通过“打开链接”按钮以html格式显示信息。这些文件是本地kmz/kml文件,当用户单击按钮时,这些文件会在Google Earth中打开

为什么当我点击“打开”按钮时,Google Earth会加载它,然后我在我的应用程序中收到一个弹出窗口,上面写着“另一个程序正在使用此文件”,然后在我重新启动应用程序之前不会清除

$(document).ready(function() {
    $('#myInput').keyup(function() {
        $('#aceCategory').html('');
        var searchField = $('#myInput').val();
        var expression = new RegExp(searchField, "i");
        $.getJSON('jsoncleanmaster.json', function(data) {
            $.each(data, function(key, value) {
                if (value.category.search(expression) != -1 ||
                    value.name.search(expression) != -1 ||
                    value.desc.search(expression) != -1 ||
                    value.url.search(expression) != -1) {
                    $('#aceCategory').append("<tr>" + "<td>" + "<b>" +
                        value.name + "---" + "(" + value.category + ")" + "</b>" + "<br>" +
                        value.desc + "</br>" + "<input type='button' id='openBtn1' style='border-radius: 25px; outline: none' value='Open Link'  >" +
                        "</td>" + "</tr")
                    const shell = require('electron').shell;
                    $(document).on("click", "#openBtn1", function(event) {
                        shell.openItem(value.url);
                    })
                }

            });
        })

    });
});
$(文档).ready(函数(){
$('#myInput').keyup(函数(){
$('#acegority').html('');
var searchField=$('#myInput').val();
var表达式=新的RegExp(searchField,“i”);
$.getJSON('jsoncleanmaster.json',函数(数据){
$。每个(数据、函数(键、值){
if(value.category.search(表达式)!=-1||
value.name.search(表达式)!=-1||
value.desc.search(表达式)!=-1||
value.url.search(表达式)!=-1){
$('#aceContegory')。追加(“+”+”)+
value.name+”--“+”(“+value.category+”)++++“
”+ value.desc+“
”+“”+
“”“+”您的单击事件可能多次触发。如果是这样,无论答案有多快,都可以找到一个可能的解决方案,如果您打算稍后重新启用按钮,还需要做更多的工作

另外两个选项:设置并检查变量,或者只是禁用按钮

选项1:设置并检查变量 在应用程序变量中,在主入口点的顶部:

var ignoreClick=false;

然后在单击处理程序中:

$(document).on("click", "#openBtn1", function(event) {
  if (ignoreClick) return;
  ignoreClick = true;
  shell.openItem(value.url);
})

选项2:禁用按钮: 重新启用单击处理程序 无论采用哪种方式,您都必须决定按钮重新启用的逻辑(或
ignoreClick
变量重置为
false
)。执行此操作的一个可能示例(在上面的选项1上展开)是设置一个短(1秒)计时器:


您可以在
setTimeout
行的末尾使用该数字;以毫秒为单位,即1000=1秒。虽然这只是一个通用/示例解决方案,但半秒或更短的时间可能就足够了。

您的单击事件可能会触发多次。如果是这样,那么无论多么快,都可以找到一个可能的解决方案答案是,如果您打算稍后重新启用该按钮,则需要进行更多的反转工作

另外两个选项:设置并检查变量,或者只是禁用按钮

选项1:设置并检查变量 在应用程序变量中,在主入口点的顶部:

var ignoreClick=false;

然后在单击处理程序中:

$(document).on("click", "#openBtn1", function(event) {
  if (ignoreClick) return;
  ignoreClick = true;
  shell.openItem(value.url);
})

选项2:禁用按钮: 重新启用单击处理程序 无论采用哪种方式,您都必须决定按钮重新启用的逻辑(或
ignoreClick
变量重置为
false
)。执行此操作的一个可能示例(在上面的选项1上展开)是设置一个短(1秒)计时器:


你可以在
setTimeout
行的末尾使用这个数字;它以毫秒为单位,也就是1000=1秒。虽然这只是一个通用/示例解决方案,但半秒甚至更短的时间就足够了。

@Nathan Hawks-谢谢!!我使用了你的选项1,解决了弹出窗口问题,但现在它正在加载第一个json url对象而不是与搜索表达式关联的文件?能否提供一个示例,说明单击“打开”按钮后如何重置值?我希望用户在搜索我创建为不同层的kmz时能够加载多个文件。@RT7您只需在某个点设置
ignoreClick=false
,即可重新启用单击处理程序;我在回答中添加了一个示例实现。@Nathan Hawks在进一步测试后,检索并打开JSON文件中的第一个url,而不是每个按钮旁边列出的url。想法?显然
value。url
是错误的值。但这远远超出了这个问题的范围。@Nathan Hawks-Thanks!!我使用了您的选项1,它解决了弹出窗口问题,但现在它加载的是第一个json url对象,而不是与搜索表达式关联的对象?您能提供一个例子,说明如何在单击“打开”按钮后重设值吗?我希望用户能够在搜索我创建的kmz时加载多个文件ent层。@RT7您只需在某个时候设置
ignoreClick=false
,即可重新启用单击处理程序;我已在我的答案中添加了一个示例实现。@Nathan Hawks在进一步测试后,检索并打开JSON文件中的第一个url,而不是每个按钮旁边列出的url。想法?显然
vurl是错误的值。但这远远超出了这个问题的范围。
$(document).on("click", "#openBtn1", function(event) {
  if (ignoreClick) return;
  ignoreClick = true;
  shell.openItem(value.url);
  setTimeout(() => { ignoreClick = false; }, 1000);
})