江辰

博客

解决前端如何通过游览器下载视频地址

发布于 # 下载视频

代码 // 下载视频地址 export function downloadVideoUrl(url) { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseType = 'blob'; xhr.onload = function(e) { if (e.currentTarget.status == 200) { var link = document.createElement('a'); link.href = window.URL.createObjectUR

如何在 MobX 中组织 Stores

发布于 # Mobx # Stores

Stores(存储) Store 可以在任何 Flux 系架构中找到,可以与 MVC 模式中的控制器进行比较。 Store 的主要职责是将逻辑和状态从组件中移至一个独立的,可测试的单元,这个单元在 JavaScript 前端和后端中都可以使用。 单一 Stores RootStore import { observable, action, configure } from 'mobx'; // configure({ enforceActions: 'always' }); class RootStore { @observable name = '123'; @action('name') updateCount() { this.name = '456'; } } export default new RootStore

解决如何知道iframe下载完成

发布于 # iframe

问题 当使用 iframe 作为文件下载的载体时,如何知道文件已经下载完毕,现有的 iframe 的onload方法具有兼容性问题,在 Chrome、IE 下无法监听onload事件监听文件下载完毕,因为onload事件本身也是对 iframe 中的 html 结构的加载进度监听。 const url = 'http://www.example.com/file.zip'; const iframe = document.createElement('iframe'); iframe.src = url; iframe.style.display = 'none'; iframe.onload = function() { console.log('start downloading...'); document.body.removeAttribute(iframe);

解决canvas,toDataURL跨域问题

发布于 # Canvas

图片服务器需要配置 Access-Control-Allow-Origin 设置通配符,允许任何域名访问 header("Access-Control-Allow-Origin: *"); 指定域名 header("Access-Control-Allow-Origin: www.xxx.com"); 此时,Chrome 浏览器不会有 Access-Control-Allow-Origin 相关的错误信息,但是,还会有其他的跨域错误信息。 HTML crossOrigin 属性解决资源跨域问题 在 HTML5 中,有些元素提供了CORS(Cross-Origin Resource Sharing)属性,这些元素包括<img>,<video>,<script>等,而提供的属性名就是 crossOrigin 属性。 因此,上面的跨域问题可以这么处理: c

解决toDataURL空白问题

发布于 # Canvans

起因 最近,笔者接到一个需求,需要在前端把 PDF 转成图片,再把图片转成 Base64,传给小程序。然后发现,只有 PDF.js 这个库,才能满足我们的需求。 核心代码 renderPage(url) { return new Promise((resolve, reject) => { const loadingTask = pdfjsLib.getDocument(url); loadingTask.promise.then((pdf) => { const pages = pdf.numPages; // 添加canvas, 根据pdf的页数添加 for (let i = 1; i <= pages; i++) { con