V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
ilt677
V2EX  ›  JavaScript

如何用 JS 写一个嵌在网页里的浏览器?

  •  
  •   ilt677 · 2016-03-01 21:30:50 +08:00 · 2941 次点击
    这是一个创建于 3188 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,我现在只会用 iframe ,但这样的话太单一了,比如,我百度了某些东西,点击搜索出来的结果,就会跳出另一个网页,有没有办法可以在 iframe 里弄一个标签页,每当点击链接就自动出现在标签页里?
    我是初学者,请大家帮帮忙

    14 条回复    2016-03-04 15:14:30 +08:00
    learnshare
        1
    learnshare  
       2016-03-01 22:01:26 +08:00
    应该使用后端来处理,也就是代理模式。前端会遇到很多问题
    ilt677
        2
    ilt677  
    OP
       2016-03-01 22:28:13 +08:00
    @learnshare 十分感谢~
    Mutoo
        3
    Mutoo  
       2016-03-01 22:32:07 +08:00
    修改 <a> 标签的 target 属性,指定 iframe 去打开页面就行了。
    http://www.w3school.com.cn/tags/att_a_target.asp
    ilt677
        4
    ilt677  
    OP
       2016-03-01 23:08:14 +08:00
    @Mutoo 我的意思是 比如说 我在 iframe 里百度了 V2EX , 然后打开 V2EX 能不能在这个 iframe 里打开,相当于在这个 iframe 里点一个链接,还是在这同一个 iframe 里显示
    guokeke
        5
    guokeke  
       2016-03-01 23:51:20 +08:00
    如果是我的话,不用 iframe ,后端获取每个 URL 对应的 HTML 并分析出 script 和 style 和去掉多余的东西(自己斟酌吧,尤其是 head 里的一坨坨),然后用 ajax 加载到自己的页面。
    Mutoo
        6
    Mutoo  
       2016-03-01 23:52:00 +08:00
    @ilt677 修改 iframe 中搜索结果的 <a> 让 target="_self" 即可
    hxsf
        7
    hxsf  
       2016-03-01 23:58:45 +08:00 via iPad
    搜一下<base target="iframe-name" />
    yeyeye
        8
    yeyeye  
       2016-03-02 00:09:34 +08:00
    如果是纯 JS ,别想做到,不要想了,做不到的。如果考虑后台中转,用袋里的方式可以做,但是耗费后台资源,没谁这么干的,就是伟大的腾讯也不敢这么玩(以前 webqq 就有做类似浏览器,其实也就是个 iframe ,你这想法十几年前大家就在想了,谁都做不到,除非用袋里的方式替换 target 标签,否则免谈)

    如果你非要问一句为什么的话,我简单告诉你,浏览器有安全策略,是不会允许你在你的网站去随意操作别人的网站
    yeyeye
        9
    yeyeye  
       2016-03-02 00:11:19 +08:00   ❤️ 1
    哦对了,你还可以内嵌插件的方式实现,这也是可行的,你可以开发 IE 插件, Chrome 插件, Firefox 插件来实现,但是这样用户必须先装你的插件……
    crafteverywhere
        10
    crafteverywhere  
       2016-03-02 01:50:31 +08:00
    crafteverywhere.github.io/Webhacking_ludumdare34/ 这个就是拿 iframe 实现的。
    iyangyuan
        11
    iyangyuan  
       2016-03-02 09:12:06 +08:00 via iPhone
    js 在浏览器端的限制越多,控制越细,浏览器就越安全,所以几乎没有可能做跨域的操作,除非楼主自己开发一款浏览器😎
    samuraime
        12
    samuraime  
       2016-03-02 09:36:04 +08:00
    target
    yuriko
        13
    yuriko  
       2016-03-02 10:12:15 +08:00
    浏览器里不用 iframe 的话,访问其他页面有很多限制。
    主要就是跨域操作问题,通过 ajax 访问其他域名的时候限制很多,不少操作都要对方网站配合修改。
    作为一个在上面浪费过不少时间的人表示,换个姿势吧……
    ilt677
        14
    ilt677  
    OP
       2016-03-04 15:14:30 +08:00
    @guokeke 十分感谢 但是我是个初学者 ajax 和后端都不怎么会
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1307 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:39 · PVG 01:39 · LAX 09:39 · JFK 12:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.