vue.js路由中怎么用iframe?

用webpack中打包vue.js页面,用了vue-router,从列表页进入详情页,详情页中想包含一个iframe引用外链,如果用相对地址会提示can not get,用完整地址可以访问到但是无法设置自适应高度。比如www.xxx.com/!#/blog/20160601中想用iframe调用www.xxx.com/blog/20160601.html,求指教

阅读 21k
3 个回答

更推荐你新建一个页面来承载frame 这样比较容易控制

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>

    <div id="app">
        <h1>Hello App!</h1>
        <p>
            <!-- 使用指令 v-link 进行导航。 -->
            <a v-link="{ path: '/foo' }">Go to Foo</a>
            <a v-link="{ path: '/bar' }">Go to Bar</a>
        </p>
        <!-- 路由外链 -->
        <router-view></router-view>
    </div>

    <script src="http://cdn.jsdelivr.net/vue/1.0.12/vue.min.js"></script>
    <script src="http://cdn.bootcss.com/vue-router/0.7.13/vue-router.min.js"></script>

    <script type="text/javascript">
        'use strict';

        Vue.use(VueRouter)

        // 定义组件
        var Foo = Vue.extend({
            props: ['src'],
            template: '<iframe :src="src"></iframe>',
            route: {
                data: function (transition) {
                    this.src = 'https://cn.bing.com/search?q=' + transition.to.path
                }
            }
        })

        // 路由器需要一个根组件。
        // 出于演示的目的,这里使用一个空的组件,直接使用 HTML 作为应用的模板
        var App = Vue.extend({})

        // 创建一个路由器实例
        // 创建实例时可以传入配置参数进行定制,为保持简单,这里使用默认配置
        var router = new VueRouter()

        // 定义路由规则
        // 每条路由规则应该映射到一个组件。这里的“组件”可以是一个使用 Vue.extend
        // 创建的组件构造函数,也可以是一个组件选项对象。
        // 稍后我们会讲解嵌套路由
        router.map({
            '/foo': {
                component: Foo
            },
            '/bar': {
                component: Foo
            }
        })

        // 现在我们可以启动应用了!
        // 路由器会创建一个 App 实例,并且挂载到选择符 #app 匹配的元素上。
        router.start(App, '#app')

    </script>
</body>
</html>
推荐问题
宣传栏