Cordova iframe 在 iOS Safari 中工作,但在 Android 中不工作
Cordova iframe working in iOS Safari but not in Android
我正在开发 Cordova 应用程序,但遇到了问题。
我面临的问题发生在一个脚本中,在该脚本中,隐藏表单被提交到 iframe 以预览文件。脚本如下:
document.body.innerHTML = '\
<div class="topbar">\
<div class="title">File</div>\
</div>\
<div id="content" class="content">\
<iframe id="file-iframe" name="file-iframe" class="file-iframe" charset="UTF-8"></iframe>\
</div>';
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "url_of_file");
form.setAttribute("target", "file-iframe");
var filenameField = document.createElement("input");
filenameField.setAttribute("type", "hidden");
filenameField.setAttribute("name", "q");
filenameField.setAttribute("value", file.filename);
form.appendChild(filenameField);
document.body.appendChild(form);
form.submit();
form.parentNode.removeChild(form);
当调用脚本时,基本上是创建一个带有空 iframe 的视图,然后创建一个表单以提交给它。
虽然这在 iOS 模拟器中完美运行,即使没有 Cordova(这还很简单 JavaScript),但它在真正的 Android 设备上失败。在调查日志时,出现以下行:
00:43:16 D CordovaLog : file:///android_asset/www/index.html: Line 1 : Uncaught SyntaxError: Unexpected token ILLEGAL
00:43:16 I chromium : [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected token ILLEGAL", source: file:///android_asset/www/index.html (1)
类似的问题表明 JSBin 或类似网站存在非法空格,但这似乎不是同一个原因,因为代码没有被复制并且实际上可以在 iOS .
为什么会发生这种情况,如何解决?
提前致谢
看起来有些非法字符实际上进入了脚本,仍然不知道为什么。至少现在可以了。
我正在开发 Cordova 应用程序,但遇到了问题。 我面临的问题发生在一个脚本中,在该脚本中,隐藏表单被提交到 iframe 以预览文件。脚本如下:
document.body.innerHTML = '\
<div class="topbar">\
<div class="title">File</div>\
</div>\
<div id="content" class="content">\
<iframe id="file-iframe" name="file-iframe" class="file-iframe" charset="UTF-8"></iframe>\
</div>';
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "url_of_file");
form.setAttribute("target", "file-iframe");
var filenameField = document.createElement("input");
filenameField.setAttribute("type", "hidden");
filenameField.setAttribute("name", "q");
filenameField.setAttribute("value", file.filename);
form.appendChild(filenameField);
document.body.appendChild(form);
form.submit();
form.parentNode.removeChild(form);
当调用脚本时,基本上是创建一个带有空 iframe 的视图,然后创建一个表单以提交给它。 虽然这在 iOS 模拟器中完美运行,即使没有 Cordova(这还很简单 JavaScript),但它在真正的 Android 设备上失败。在调查日志时,出现以下行:
00:43:16 D CordovaLog : file:///android_asset/www/index.html: Line 1 : Uncaught SyntaxError: Unexpected token ILLEGAL
00:43:16 I chromium : [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected token ILLEGAL", source: file:///android_asset/www/index.html (1)
类似的问题表明 JSBin 或类似网站存在非法空格,但这似乎不是同一个原因,因为代码没有被复制并且实际上可以在 iOS .
为什么会发生这种情况,如何解决?
提前致谢
看起来有些非法字符实际上进入了脚本,仍然不知道为什么。至少现在可以了。