代码
// 下载视频地址
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
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 的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);
图片服务器需要配置 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
起因
最近,笔者接到一个需求,需要在前端把 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