更改网址后如何在窗口弹出后执行

时间:2018-12-25 14:40:33

标签: javascript vue.js nuxt.js

我在js中有一个window.open弹出窗口 现在我在我的nuxtjs应用程序(vuejs)中是什么 跟随该弹出窗口的URL 当我在URL中获得参数?code =时 从该网址获取数据到我的数据“信息”

后端和前端在其他服务器上

我正在后端使用laravel社交网站,我正在尝试发出此社交api请求

              <template>
                <section class="container">
              <a  @click.stop="socialLogin()">google</a>
              {{ info }}
                </section>
              </template>

              <script>


              export default {
                data(){
                  return{
                    info: {},
                  }
                },
                methods: {  
                async socialLogin(){
                    await this.$axios.$get(`http://localhost:8000/api/auth/login/google`)
                        .then((response) => {
                          if(response.redirectUrl){


                            const newWindow = openWindow(response.redirectUrl)
                            console.log(newWindow);


                          }
                          //console.log(response)
                          })
                    },


                  },

              }

              function openWindow (url, title, options = {}) {
                if (typeof url === 'object') {
                  options = url
                  url = ''
                }
                options = { url, title, width: 600, height: 720, ...options }
                const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screen.left
                const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screen.top
                const width = window.innerWidth || document.documentElement.clientWidth || window.screen.width
                const height = window.innerHeight || document.documentElement.clientHeight || window.screen.height
                options.left = ((width / 2) - (options.width / 2)) + dualScreenLeft
                options.top = ((height / 2) - (options.height / 2)) + dualScreenTop
                const optionsStr = Object.keys(options).reduce((acc, key) => {
                  acc.push(`${key}=${options[key]}`)
                  return acc
                }, []).join(',')
                const newWindow = window.open(url, title, optionsStr)
                if (window.focus) {
                  newWindow.focus()
                }
                return newWindow
              }

              </script>

              <style>

              </style>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您的函数openWindow应该是一种可以用socialLoginthis.openWindow(...)中调用的方法,例如:

if(response.redirectUrl){
  const newWindow = this.openWindow(response.redirectUrl)
  console.log(newWindow);
}

然后,在新方法openWindow中,您可以轻松地通过以下方式设置信息:

this.info = url