Vue + Nuxt JS-如何在“ gobal”函数中获取主机名?

时间:2019-12-24 14:04:46

标签: javascript vue.js nuxt.js

我有一个多域页面,该页面应以不同方式显示每个域的组件。因此,我希望有一个“全局”函数,可以在模板内的“ v-if”语句中使用

我遵循建议使用插件how-to-define-a-global-method-accessible-to-all-components创建全局对象。不幸的是,由于js对象“窗口”似乎未定义,我目前不知道如何获取主机名/域名?

有什么想法可以最好地实现吗?谢谢

我的插件“ global.js” =>返回“窗口”对象未定义的错误

const cmsURLBuilder = {
    isDomain(domain) {
        return this.window.location.hostname.includes(domain); 
    },
}

export default ({app}, inject) => {
    inject('cmsURLBuilder', cmsURLBuilder);
}

在我的模板中使用此全局对象

<template>
  <div>
    <iframe v-if="$cmsURLBuilder.isDomain('xxx')"  id="frame-xxx" src="https://xxxx/..." />
     ...
  </div>
</template>

1 个答案:

答案 0 :(得分:1)

将插件模式设置为客户端。

plugins: [
    { src: '~/plugins/myplugin.js', mode: 'client' }
]

或包装对窗口对象的调用,

if (process.client) {
  console.log('window.location', window.location)
}