相关疑难解决方法(0)

跨浏览器Javascript XML解析

是否有任何跨浏览器/跨平台的方法来解析Javascript中的XML文件?

javascript xml cross-platform cross-browser

63
推荐指数
2
解决办法
4万
查看次数

Javascript不使用输入读取文件

我有这个代码,并且要将文件转换为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)

javascript file input onload

12
推荐指数
2
解决办法
2万
查看次数

在Javascript中将本地图像转换为base64字符串

我正在尝试将本地图像转换为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)

javascript base64 image local

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

有没有办法知道链接/脚本是否仍处于挂起状态或是否失败

我想从HTML知道以下,如果link[rel=import],link[rel=stylesheet],imgscript挂起的加载/失败/中止/ ,而无需事先并在任何时候添加侦听器的事件发生后,

<!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)

javascript html5 dom promise

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

如何使用JavaScript写入文件(用户目录)?

我想使用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);

但不行.

有没有办法写入文件?

javascript jquery html5

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

使用文件系统作为离线播放视频的来源

我正在尝试为我的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)

javascript google-chrome-os html5-filesystem

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