在Vue專案中載入krpano全景圖
阿新 • • 發佈:2018-12-14
在Vue-cli專案中做krpano全景圖編輯器的時候,由於js外掛的路徑是動態的,做的過程中遇到了載入不到資源的難題,在網上搜索了好久也沒找到合適的辦法,最後想到了可能是JS載入的問題,於是解決了問題,下面跟大家分享一下做法。
首先, 在vue的路由頁面中載入動態的js外掛,需要等待JS檔案載入完成之後,才能使用JS外掛中的方法來載入全景圖:
// 載入動態JS檔案 var _doc = document.getElementsByTagName('head')[0]; var js = document.createElement('script'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', jsUrl); // jsUrl是JS檔案的路徑 _doc.appendChild(js); // 下面是載入全景圖, 針對不同瀏覽器做相容 if (document.all) { //如果是IE js.onreadystatechange = function () { if (js.readyState == 'loaded' || js.readyState == 'complete') { embedpano({ // js外掛中的方法,用於載入全景圖 swf: that.tourSwfUrl, xml: that.tourXmlUrl, target: "pano", html5: "always", mobilescale: 1.0, passQueryParameters: true }); that.krpano = document.getElementById("krpanoSWFObject"); } } } else { js.onload = function () { embedpano({ swf: this.tourSwfUrl, // krpano全景圖的swf檔案路徑 xml: this.tourXmlUrl, // krpano全景圖的xml檔案路徑 target: "pano", html5: "auto", mobilescale: 1.0, flash: 'auto', passQueryParameters: true }); this.krpano = document.getElementById("krpanoSWFObject") // 儲存全景圖物件 } }
然後就是將全景圖顯示在頁面上
<div id="pano"></div>
這樣全景圖就能順利加載出來了,第一次做前端知識分享,有不妥之處歡迎留言,謝謝!