是否有任何跨浏览器/跨平台的方法来解析Javascript中的XML文件?
我有这个代码,并且要将文件转换为base64,我必须单击选择文件然后选择它.我想硬编码文件名,以便在页面加载时转换为base64.
JavaScript的:
var handleFileSelect = function(evt) {
var files = evt.target.files;
var file = files[0];
if (files && file) {
var reader = new FileReader();
reader.onload = function(readerEvt) {
var binaryString = readerEvt.target.result;
document.getElementById("base64textarea").value = btoa(binaryString);
};
reader.readAsBinaryString(file);
}
if (window.File && window.FileReader
&& window.FileList && window.Blob) {
document.getElementById('filePicker')
.addEventListener('change', handleFileSelect, false);
} else {
alert('The File APIs are not fully supported in this browser.');
}
};
Run Code Online (Sandbox Code Playgroud)
HTML:
<div>
<div>
<label for="filePicker">Choose or drag a file:</label><br/>
<input type="file" id="filePicker">
</div> …Run Code Online (Sandbox Code Playgroud) 我正在尝试将本地图像转换为Base64 字符串.我没有使用任何HTML,只需要在代码中引用图像路径的javascript.
例如,转换:
C:\Users\Work\Desktop\TestImage.jpg
Run Code Online (Sandbox Code Playgroud)
成
/9j/4AAQSkZJRgABAQEASABIAAD/4QBKRXhpZgAASUkqAAgAAAADABoBBQABAAAAMgAAABsBBQABAAAAOgAAACgBAwABAAAAAgAAAAAAAAAAVOoqgJaYAABU6iqAlpgA/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIH.....etc...
Run Code Online (Sandbox Code Playgroud)
有很多这样的帖子,但他们似乎都以某种方式利用HTML,以便识别文件路径.我希望我能在 javascript中编写一个已定义的文件路径.
我试过这个无济于事:
function convertImgToBase64()
{
var canvas = document.createElement('CANVAS');
img = document.createElement('img'),
img.src = C:\Users\Work\Desktop\TestImage.jpg;
img.onload = function()
{
canvas.height = img.height;
canvas.width = img.width;
var dataURL = canvas.toDataURL('image/png');
alert(dataURL);
canvas = null;
};
}
Run Code Online (Sandbox Code Playgroud)
一个例子有以下html和javascript,但我希望这可以合并在一起.感谢您的支持
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<input type='file' id="asd" />
<br>
<img id="img" src="//placehold.it/1x1/" />
<div id="base"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
function el(id){return document.getElementById(id);} // Get …Run Code Online (Sandbox Code Playgroud) 我想从HTML知道以下,如果link[rel=import],link[rel=stylesheet],img和script被挂起的加载/失败/中止/ ,而无需事先并在任何时候添加侦听器的事件发生后,
<!DOCTYPE html>
<html>
<head>
<title>App</title>
<meta charset="utf-8">
<link rel="import" href="template-bundle.html">
<link rel="stylesheet" href="bundle.css">
</head>
<body>
<header><img src="logo.png" alt="App logo"></header>
<!-- Boilerplate... -->
<script src="./app-bundle.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
换句话说:是否有提供类似蓝鸟的一些接口isPending(),isResolved(),isRejected()方法或常规ES6承诺?
奖金问题:这可以通过服务工作者实现吗?
由于SW可以拦截请求并知道它们的状态,我想知道我是否可以实现一个返回Promise的API
load事件被触发,则解决error或被aborted解雇,则被拒绝谢谢您的帮助
更新和解决方案:
感谢@pritishvaidya和@ guest271314的答案,我能够提出一个可行的解决方案MutationObserver,包括观察DOM添加资源节点(链接,img,脚本)并向他们添加一个将如上所述解决的承诺
这非常有效,只有<head>在任何其他资源之前脚本标记需要内联的空洞.这是一个例子
var resourceNodeSelector = 'link[href],script[src],img[src]';
function watchResource (n) {
var url = n.href || n.src;
if …Run Code Online (Sandbox Code Playgroud) 我想使用html5和javascript或jquery从chrome(所有版本)写入任何文件的txt.
我尝试过FileSystem API,我试过的代码是:
function onFs(fs) {
console.log('test');
fs.root.getFile('log.txt', {create: true, exclusive: true},
function(fileEntry) {
// fileEntry.isFile === true
// fileEntry.name == 'log.txt'
// fileEntry.fullPath == '/log.txt'
fileEntry.getMetaData(function(md) {
console.log(md.modificationTime.toDateString());
}, onError);
},
onError
);
}
window.webkitRequestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs);
但不行.
有没有办法写入文件?
我正在尝试为我的HTML5视频播放器添加离线功能.我试图将文件作为blob写入chrome文件系统,然后从那里读取它们.我相信我遇到的问题是文件实际上并没有被写入,只是文件名.由于我的下面的代码目前已经构成,它仍然有效,但仍然只有它永久连接到互联网.我的目标是将文件下载到文件系统中的永久目录,然后在互联网断开连接时继续播放.
$(document).ready(function() {
var dir = "http://www.kevmoe.com/networks/gsplayer/";
var fileextension = ".mp4";
var srcfiles = $.ajax({
//This will retrieve the contents of the folder if the folder is configured as 'browsable'
url: dir,
success: function(data) {
//List all .mp4 file names in the page
$(data).find("a:contains(" + fileextension + ")").each(function() {
var filename = $(this).attr("href").replace(window.location.host, "").replace("http://", "");
$("#container").append("<div id='div1' class='video'><video id='video1' class='vidarray' preload='none' poster='bkg.png'><source src='" + filename + "' type='video/mp4'></video></div>");
async: false;
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTANT, 200000 * 1024 * …Run Code Online (Sandbox Code Playgroud)