jspdf& CKEditor - .createObjectURL不是函数

时间:2016-03-06 19:51:52

标签: javascript jspdf html2pdf

尝试使用jsPDF时,我收到了错误

Error in function saveAs: n(...).createObjectURL is not a function

我的代码很简单:

HTML

    <button class="generatePdf"> click me </button>

JS

    //Generate PDF
    $(document).on('click', '.generatePdf', function() {
        var doc = new jsPDF();
        doc.text(20,20,'Some dummy text');
        doc.save('print.pdf')
    });

我在Laravel中使用它与Bower和Elixir(gulp)但是我得到了同样的错误:

Error in function FileSaver@http://mrrio.github.io/jsPDF/dist/jspdf.debug.js:5875:18: get_URL(...).createObjectURL is not a function

如果使用

    <script src="http://mrrio.github.io/jsPDF/dist/jspdf.debug.js"></script>

我接受jsPdf的替代方案,如果你有的话。 它发生在Firefox 44.0.2和Chromium 48.0.2564.116

2 个答案:

答案 0 :(得分:0)

在阅读this问题后,我插入了给定的代码

    <script>(function () {
            var _createObjectURL = window.URL.createObjectURL;
            Object.defineProperty(window.URL, 'createObjectURL', {
                set: function (value) {
                    console.trace('set createObjectURL')
                    _createObjectURL = value;
                },
                get: function () {
                    console.trace('get createObjectURL')
                    return _createObjectURL;
                }
            })
        })();
        (function () {
            var _URL = window.URL;
            Object.defineProperty(window, 'URL', {
                set: function (value) {
                    console.trace('set URL')
                    _URL = value;
                },
                get: function () {
                    console.trace('get URL')
                    return _URL;
                }
            })
        })();  </script>

并发现问题出现在eqneditor的{​​{1}}插件中。我删除了插件,一切正常。

答案 1 :(得分:0)

我能够通过取消设置全局URL来解决它:

    let oldURL = undefined;
    if (URL) {
        oldURL = URL;
        URL = undefined;
    }
    // file saving code
    if (oldURL) {
        URL = oldURL;
    }