Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 使用目标属性将文件上载到本地iframe在最新版本中不起作用_Javascript_Html_Iframe_Kcfinder - Fatal编程技术网

Javascript 使用目标属性将文件上载到本地iframe在最新版本中不起作用

Javascript 使用目标属性将文件上载到本地iframe在最新版本中不起作用,javascript,html,iframe,kcfinder,Javascript,Html,Iframe,Kcfinder,我正在使用kcFinder 2.54通过CKEditor上传我的一个站点中的文件。我知道这些脚本的版本都很旧,但直到最近它们还可以正常工作 在浏览Chrome的变更日志时,我注意到以下几点: 本机文件系统API使用添加的功能启动新的origin试用版 我想这可能是我的问题的原因,但也许不是。代码如下: 初始化kcFinder时,它会创建一个简单的表单: 请注意target=“uploadResponse”,它是在文档的正文前面加上的本地iframe: 这就是上载文件(This.form)

我正在使用kcFinder 2.54通过CKEditor上传我的一个站点中的文件。我知道这些脚本的版本都很旧,但直到最近它们还可以正常工作

在浏览Chrome的变更日志时,我注意到以下几点:

本机文件系统API使用添加的功能启动新的origin试用版

我想这可能是我的问题的原因,但也许不是。代码如下:

初始化kcFinder时,它会创建一个简单的表单:


请注意
target=“uploadResponse”
,它是在文档的
正文
前面加上的本地iframe:


这就是上载文件(This.form)函数的外观:

\uuU4.uploadFile=函数(表单){
如果(!\可写){
_.alert(u.label(“无法写入上载文件夹”);
$('#upload').detach();
_.initUploadButton();
返回;
}
form.elements[1].value=\ux.dir;
$('').prependTo(document.body);
$(“#加载”).html(35;.label(“上载文件…”).show();
表单提交();
$('#uploadResponse').load(函数(){
var response=$(this.contents().find('body').text();
$(“#加载”).hide();
response=response.split(“\n”);
所选变量=[],错误=[];
$。每个(响应、函数(i、行){
如果(第行substr(0,1)==“/”)
selected[selected.length]=行.substr(1,行.length-1);
其他的
错误[errors.length]=行;
});
if(errors.length){
errors=errors.join(“\n”);
if(errors.replace(/^\s+/g,”).replace(/\s+/$/g,”).length)
_.警报(错误);
}
如果(!selected.length)
选中=空;
_。刷新(选定);
$('#upload').detach();
setTimeout(函数(){
$('#uploadResponse').detach();
}, 1);
_.initUploadButton();
});
};
我试过调试它,意识到
响应
完全是空的。然后我意识到我并不惊讶,因为请求被取消了:

我唯一注意到的是这个标题
升级不安全请求:1
,但不确定这是否重要,因为iframe是完全本地的

我一直在搜索有关
target
属性可能降级的信息,或者使用iframe发送表单的方式,但没有结果。如果有人经历过类似的事情,或者至少可以告诉我它不起作用的原因,也许我可以想出一个解决办法

到目前为止我已经尝试过的事情:

  • 更改
    javascript:
    to
    javasript:false
  • 更改
    javascript:到iframe源中的
    #

  • 我遇到了同样的问题。我通过调用
    表单解决了这个问题。在下一个勾选中提交

    // [...]
    
    $('<iframe id="uploadResponse" name="uploadResponse" src="javascript:;"></iframe>').prependTo(document.body);
    $('#loading').html(_.label("Uploading file...")).show();
    
    setTimeout(function() {
      $('#uploadResponse').load(function() {
          // [...]
      });
      form.submit();
    }, 1);
    
    /[…]
    $('').prependTo(document.body);
    $(“#加载”).html(35;.label(“上载文件…”).show();
    setTimeout(函数(){
    $('#uploadResponse').load(函数(){
    // [...]
    });
    表单提交();
    }, 1);
    
    我也遇到了这个问题。经过一段时间的研究,可以通过在文件
    kcfinder/js/060.toolbar.js
    中将
    src=“javascript:;”
    替换为
    src=“about:blank”
    轻松解决这个问题:

    $('<iframe id="uploadResponse" name="uploadResponse" src="javascript:;"></iframe>').prependTo(document.body);
    
    $('').prependTo(document.body);
    

    $('').prependTo(document.body);
    
    参考:


    我仍然不知道Chrome到底发生了什么,但您的解决方案可以在更新版本的kcfinder上运行(我有2.54)。更新了kcfinder并应用了您的解决方案,它成功了。你不知道你救了我多少头痛。谢谢你,朋友!
    $('<iframe id="uploadResponse" name="uploadResponse" src="about:blank"></iframe>').prependTo(document.body);