bobo 发表于 2022-8-21 18:04:01

引入element-plus 失败

本帖最后由 bobo 于 2022-8-21 18:10 编辑

我用了李恒道老哥的引入lelment-plus的代码,放在机子上,报了如下错误:
!(data/attachment/forum/202208/21/180325zg7li7l7lwynn254.png)

#### 兄弟们,这情况该咋办呢?代码如下:
```js
let script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.src = "https://cdn.jsdelivr.net/npm/vue@next";
document.documentElement.appendChild(script);
let link= document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.href= "https://unpkg.com/element-plus/dist/index.css";
document.documentElement.appendChild(link);
let elscript= document.createElement('script');
elscript.setAttribute('type', 'text/javascript');
elscript.src = "https://unpkg.com/element-plus";
document.documentElement.appendChild(elscript);
window.onload=()=>{
let text=`<div id="app" style="position: absolute;top: 50vh;left: 50vw;background: #fb7d7d;width: 100px;height: 100px;">
         <el-button>{{ message }}</el-button>
    </div>`

var el=document.createElement('div')
el.innerHTML=text;
document.body.append(el)
      const App = {
      data() {
          return {
            message: "Hello Element Plus",
          };
      },
      };
      const app = Vue.createApp(App);
   app.use(ElementPlus);
      app.mount("#app");
}

steven026 发表于 2022-8-21 18:04:02

bobo 发表于 2022-8-21 18:27
#### 还是不行诶老哥
> 报错似乎还是原来的那个错误
!(data/attachment/forum/202208/21/182632qja1c ...
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry to take over the world!
// @author       You
// @match      https://www.baidu.com/
// @resource vue https://cdn.jsdelivr.net/npm/vue@next
// @resource ele https://unpkg.com/element-plus
// @resource ele_css https://cdn.jsdelivr.net/npm/element-plus/dist/index.css
// @grant      unsafeWindow
// @grant      GM_getResourceText
// @grant      GM_addStyle
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    unsafeWindow.eval(GM_getResourceText("vue"))
    //debugger
    unsafeWindow.eval(GM_getResourceText("ele").replace("typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :",""))
    GM_addStyle(GM_getResourceText("ele_css"));
    let text=`<div id="app" style="position: absolute;top: 50vh;left: 50vw;background: #fb7d7d;width: 100px;height: 100px;">
         <el-button>{{ message }}</el-button>
    </div>`

    var el=document.createElement('div')
    el.innerHTML=text;
    document.body.append(el)
    const App = {
      data() {
            return {
                message: "Hello Element Plus",
            };
      },
    };
    const app = Vue.createApp(App);
    app.use(ElementPlus);
    app.mount("#app");
})();

修改了一下代码 应该可以了

李恒道 发表于 2022-8-21 18:10:24

帖出来脚本代码看看

bobo 发表于 2022-8-21 18:11:37

李恒道 发表于 2022-8-21 18:10
帖出来脚本代码看看

贴好啦老哥

steven026 发表于 2022-8-21 18:17:10

你可以试试resource+eval
https://bbs.tampermonkey.net.cn/forum.php?mod=redirect&goto=findpost&ptid=1084&pid=30632

```

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry to take over the world!
// @author       You
// @match      https://bbs.tampermonkey.net.cn/
// @resource vue https://cdn.jsdelivr.net/npm/vue@next
// @resource ele https://unpkg.com/element-plus
// @resource ele_css https://cdn.jsdelivr.net/npm/element-plus/dist/index.css
// @grant      unsafeWindow
// @grant      GM_getResourceText
// @grant      GM_addStyle
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    unsafeWindow.eval(GM_getResourceText("vue"))
    unsafeWindow.eval(GM_getResourceText("ele"))
    GM_addStyle(GM_getResourceText("ele_css"));
    let text=`<div id="app" style="position: absolute;top: 50vh;left: 50vw;background: #fb7d7d;width: 100px;height: 100px;">
         <el-button>{{ message }}</el-button>
    </div>`

    var el=document.createElement('div')
    el.innerHTML=text;
    document.body.append(el)
    const App = {
      data() {
            return {
                message: "Hello Element Plus",
            };
      },
    };
    const app = Vue.createApp(App);
    app.use(ElementPlus);
    app.mount("#app");
})();
```

bobo 发表于 2022-8-21 18:27:24

steven026 发表于 2022-8-21 18:17
你可以试试resource+eval
https://bbs.tampermonkey.net.cn/forum.php?mod=redirect&goto=findpost&pti ...

#### 还是不行诶老哥
> 报错似乎还是原来的那个错误
!(data/attachment/forum/202208/21/182632qja1c35oaq0ois18.png)

李恒道 发表于 2022-8-21 18:35:40

百度网页有amd模块化
因为element-plus是umd引入
优先是exports-》amd-》window
导致没赋值到window,赋值上amd了
用相应模块指令拿到element-plus的函数,或者用unsafe+require引入都可以

steven026 发表于 2022-8-21 19:02:09

李恒道 发表于 2022-8-21 18:35
百度网页有amd模块化
因为element-plus是umd引入
优先是exports-》amd-》window


我试了一下直接在devtools里引入或者eval都失败了
可能百度的页面和element-plus代码有冲突(我没用过element-plus不是很清楚,还在研究)

steven026 发表于 2022-8-21 19:29:59

李恒道 发表于 2022-8-21 18:35
百度网页有amd模块化
因为element-plus是umd引入
优先是exports-》amd-》window


GGNB 下了个断点看了一下,果然是amd的问题,eval的时候把这行判断replace掉就行了

李恒道 发表于 2022-8-21 19:44:59

steven026 发表于 2022-8-21 19:29
GGNB 下了个断点看了一下,果然是amd的问题,eval的时候把这行判断replace掉就行了 ...

突然想起来我之前运行也没成功可能也是因为这个问题...
页: [1] 2
查看完整版本: 引入element-plus 失败