搜尋

首頁  >  問答  >  主體

html - 如何在頁面中呼叫其他js檔案的JavaScript物件?

一個頁面已經引入該js,但是不能呼叫它裡面的方法..(在同一個資料夾下)
程式碼如下html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="./AgentGetway.js"></script>
</head>
<body>
<script type="text/javascript">
    console.log(AgentStatus['host']);//这个地方说AgentStatus is not defined
</script>
</body>
</html>

js的內容如下:

var AgentStatus={
    host :'127.0.0.1'
};

或:

var AgentStatus=(function(){
    return {
        host:'127.0.0.1'
    }
})()

都不能取得,求大神點撥.........

我想大声告诉你我想大声告诉你2762 天前884

全部回覆(5)我來回復

  • 某草草

    某草草2017-06-14 10:54:32

    提問者只是想獲得引用 js 裡的全域變數而已,這麼簡單的需求,不一定非要模組化,延緩一下獲取的時機不就行了:

    <script type="text/javascript">
        window.onload = function() {
            //这个地方 AgentStatus 就不会是 undefined 了
        }
    </script>

    回覆
    0
  • ringa_lee

    ringa_lee2017-06-14 10:54:32

    用chrome瀏覽器控制台--network,看一下你的js檔案有沒有加載,如果有加載,看下console下面有沒有錯誤。

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-06-14 10:54:32

    這個問題本質就是JS的模組化。之前有很多解決方案,如AMD,CMD,requireJS, CommonJS…這些網路上有很多,你可以自己搜尋。
    現在跟你講已經納入ES6規範的解決方案:

    1. 首先你需要一個構建工具 webpack 或 gulp,相較之下現在前者比較流行,但學習成本稍高,或者那種已經弄好的腳手架如vue-cli

    2. npm i babel這個工具是用來將ES6程式碼解析成大部分瀏覽器支援的JS程式碼。 babel這一步具體咋實現網路上也有教學。當然如果你用類似vue-cli這樣的鷹架,它會幫你把一切配置好,包括本地服務之類的,可以略過這一步。

    3. 使用ES6的規範來寫語言,解決你的問題

    // AgentGetway.js
    export const AgentStatus = {
        host :'127.0.0.1'
    }
    // index.html 你的html文件中的script
    <script>
        import {AgentStatus} from './AgentGetway.js'
        console.log(AgentStatus) // host: '127.0.0.1'
    </script>  

    tips:

    1. 你復現問題的情景,在真實的專案開發中應該很少遇到,因為這是一個早在幾前就解決掉的一個問題,而且是大型專案必定會遇到的問題

    2. 這個問題的核心就是JS模組化,關於這一點涉及的知識點多且廣,有興趣還是了解下好,當然也可以略過直接看ES6規範的模組化

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-14 10:54:32

    module.export = 你想要導出的函數;
    在另一個頁面來import導出的這個函數。

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-14 10:54:32

    require.js

    回覆
    0
  • 取消回覆