精华内容
下载资源
问答
  • 浏览器插件开发

    2019-02-26 10:35:11
    自己开发的一个360浏览器插件,用于学习练手,请多多指教。
  • vue浏览器插件开发工具devtools,使用方式:打开谷歌扩展程序页面,并打开该页的开发者模式按钮,点击加载已解压的扩展程序,选择解压后的文件,重启浏览器,打开浏览器开发工具即可使用.
  • 浏览器插件开发入门

    2013-06-09 09:46:27
    使用QT进行浏览器插件开发技术,包括ActiveX控件和NPAPI插件的开发
  • IE插件开发--用BHO(Browser-Helper-Objects)定制浏览器.doc WWW浏览器插件开发技术.pdf 关于浏览器插件在解决二次录入方面的应用.doc 浏览器插件之ActiveX开发.docx 解压密码1
  • Chrome浏览器插件开发入门

    千次阅读 2018-11-11 08:48:09
    Chrome浏览器插件开发入门

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    转载:http://ux.sohu.com/topics/5028aa0d88ba205052000407


    引子: Google Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的开放原始码网页浏览器。 该浏览器是基于其他开放原始码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。 软件的名称是来自于称作Chrome的网路浏览器图形使用者界面(GUI)。 软件的beta测试版本在2008年9月2日发布,提供43种语言版本,有支持Windows平台、Mac OS X和Linux版本提供下载。 2012年8月6日,Chrome已达全球份额的34%,成使用最广浏览器。


    Chrome插件的本质就是一个由 manifest.json 文件和插件所需要的图片,css,html,js资源组成的一个web页面,只是和传统的web页面不同的,它是以chrome浏览器为宿主运行的一个web程序。


    本文将教会大家为流行的Chrome制作一个简易的浏览器插件,作为大家chrome插件入门的第一课。


    首先新建一个文件夹来存放我们的chrome插件资源(图片,js,css,html)。在这个新建的文件夹里创建一个新文件,并修改文件名为 manifest.json 。打开新建的这个manifest.json 文件,敲入以下代码:

    1. {
    2.     "name": "NutUX SOHU-INC",
    3.     "version": "1.0.0",
    4.     "description": "搜狐技术部前端团队博客,关注前端",
    5.     "app": {
    6.         "launch": {
    7.             "web_url": "http://ux.sohu.com"
    8.         },
    9.         "urls": [ "http://ux.sohu.com" ]
    10.     },
    11.     "icons": {
    12.         "128": "nut_logo.png",
    13.         "48": "nut_logo.png",
    14.         "16": "nut_logo.png"
    15.     },
    16.     "requirements":{
    17.         "3D":{
    18.             "features":["css3d","webgl"]
    19.         }
    20.     }
    21. }



    大家可以看到 manifest.json文件,就是一个json格式标准的文件。

    • name 属性定义了插件的名称
    • version 定义了插件的开发版本号
    • description 定义了插件的详细描述信息
    • app 对象定义了要打开的URL地址
    • iocns 对象定义了几种不同尺寸的图标的地址
    • requirements 对象定义了需要用到资源权限 
      我们把所需要用到图标,也放入到manifest.json所在的文件夹中。


    以上,我们就完成了这个简单的chrome插件的开发工作。 


    下面要让他在chrome中运行起来。

    可以在chrome浏览器地址栏输入:

    1. chrome://chrome/extensions

    或者按照以下步骤,打开Chrome浏览器的扩展程序 enter image description here


    然后勾选开发人员模式

    enter image description here



    点击载入正在开发的扩展程序,把之前新建的存放manifest.json文件和logo图片资源的文件夹载入。chrome会自动识别manifest文件并加载图标,如果插件编写没有错误,则会在扩展程序中,添加我们刚刚开发的插件,如下图

    enter image description here



    并且在Chrome浏览器的应用程序页,会显示我们的插件图标的快捷方式: enter image description here



    至此,我们的第一个简单的chrome插件就开发完毕!



    是不是觉得很容易很简单呢,有了这个成功的开始,如果有兴趣,你也可以开发出功能更强大,效果更炫,体验更好的Chrome插件。


    下面推荐一些Chrome插件开发相关的资源,对chrome插件开发有兴趣的同学可以参考:

    1. Chrome官方开发指南
    2. 360浏览器开发小组翻译的Chrome官方插件开发文档
    3. Chrome Web Store 

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block var foo = 'bar'; 

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    gantt
            dateFormat  YYYY-MM-DD
            title Adding GANTT diagram functionality to mermaid
            section 现有任务
            已完成               :done,    des1, 2014-01-06,2014-01-08
            进行中               :active,  des2, 2014-01-09, 3d
            计划一               :         des3, after des2, 5d
            计划二               :         des4, after des3, 5d
    
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 遇到书签项目需要浏览器插件开发,需要什么知识和技术,在浏览器收藏书签同步书签网站里面 www.cnshuqian.com 。 但是浏览器种类很多这个有怎么来开发插件。

    有个书签项目需要开发浏览器插件,用户收藏书签同步同步书签网站 www.cnshuqian.com 需要什么知识和技术
    满足这个需求。 而且浏览器种类很多这个有怎么来开发插件很困惑。

    展开全文
  • 浏览器插件开发-常用API

    万次阅读 2018-12-06 11:00:31
    浏览器插件开发-常用API 调研资料 manifest.json 官方文档 Chrome Extension API 360浏览器的插件文档 中文, 虽然内核差不多但是不一定与 Chrome api 一致, 可以作为参考 Chrome 官方案例库 案例 如何实现网页和...

    浏览器插件开发-常用API

    调研资料

    常用 API

    1. chrome.runtime

    管理 background 返回关于清单的详细信息,并侦听和响应应用程序或扩展生命周期中的事件。您还可以使用这个API将url的相对路径转换为完全限定的url。

    1. chrome.runtime.getBackgroundPage(background: Window => {...}) 返回当前扩展的 background 对象
    2. chrome.runtime.ma 返回清单文件
    3. chrome.runtime.getURL 返回扩展中文件相对于安装位置的路径
    4. chrome.runtime.setUninstallURL 设置卸载时要访问的 URL
    5. chrome.runtime.reload 重新加载扩展

    2. chrome.cookies

    使用前需要先注册权限

    {
        "permission": [
            "cookies",
            "https://*.xxx.com"
        ]
    }
    

    常规方法 get | remove | set | getAll 等除外,以下是可能会用到的 api

    1. chrome.cookies.onChanged.addListener(({removed, cookie}) => {...}) removed=true 表示的是cookie被删除的情况,否则表示被添加或者设置,cookie 表示操作的cookie

    3. chrome.tabs

    浏览器标签操作,需要开通标签操作的权限

    {
        "permission": [
            "tabs",
            "https://*.xxx.com"
        ]
    }
    
    1. chrome.tabs.create(params, callback) 创建一个新的标签,以下是 params 参数
      • windowId 创建新标签的目标窗口,默认当前窗口
      • index 标签在窗口中的位置
      • url 标签导航的初始页面
      • selected 是否为选中的 默认是true
      • pinned 标签是否为固定
      • callback(tab) tab 是创建后的标签的细节,包括id
    2. chrome.tabs.executeScript(tabId, details, callback) 向标签页注入脚本
      • tabId 标签页ID,默认为当前选中窗口
      • details.code 直接注入的脚本代码
      • details.file 也可以指定注入的脚本文件,与 details.code 二选一
    3. chrome.tabs.get(tabId, callback) 获取指定标签页的细节
    4. chrome.tabs.getSelected(windowId, callback) 获取特定窗口(windowId 默认为当前窗口) 的选中的标签
    5. chrome.tabs.insertCSS(tabId, details, callback) 向页面注入样式
    6. chrome.tabs.remove(tabId, callback) 移除标签
    7. 其他信息参照文档

    4. chrome.extension

    主要被用于通信支持,提供 扩展与 content_script 之间, 扩展与扩展之间,与大多数 chrome.* API 不同,chrome.extension 部分功能可以直接在 content_script 中使用

    注意 chrome.extensionchrome.runtime 由很多重叠的 api , chrome.extension 比较老旧,尽量使用 chrome.runtime

    1. chrome.extension.connect(extensionId, connectInfo) 尝试连接到扩展内的其他监听者,主要用于 content_script => 扩展进程 的连接,由扩展进程 => content_script 的主动连接则可通过 chrome.tabs.connect() 连接
      • extensionId 想要连接的扩展的扩展ID, 默认为注入这个 content_script 的扩展
    2. chrome.extension.onConnect.addListener(listener) 监听到发来的连接时触发的监听函数
    3. chrome.extension.sendMessage(extensionId, message, responseCallback) 向扩展内的其他监听者发送消息
      • extensionId 扩展Id, 默认为函数调用者所在的扩展
      • message
      • responseCallback(response) 返回的响应数据
    4. chrome.extension.onMessage.addListener(details => {...}) 接收到本扩展中消息后的监听函数
      • details.message 信息
      • details.sender 信息发送者
      • details.sendRender() 发送响应消息,只能调用一次
    5. chrome.extension.getURL(path) 将扩展内的文件路径转换为 普通页面可用的文件路径
    6. chrome.extension.getBackgroundPage() 返回扩展中当前运行的 background 页面
    7. chrome.extension.getViews(fetchProperties) 返回指定类型的页面,包括标签页、后台页、弹窗页等
      • fetchProperties.type 可以是 [“tabs”, “popup”, “infobar”, “notification”] 省略这项会返回所有吧类型的页面 包括 background

    注意,只有以下 extension API 可以在 content_script 中使用

    1. chrome.extension.connect
    2. chrome.extension.onConnect
    3. chrome.extension.sendMessage
    4. chrome.extension.onMessage
    5. chrome.extension.getURL

    5. chrome.webNavigation

    处理正在进行中的导航请求,需要开通权限

    {
        "permission": [
            "webNavigation",
        ]
    }
    

    一个普通的导航从开始到导航结束所经历的生命周期如下

    onBeforeNavigate => onCommitted => onDOMContentLoaded => onCompleted
    
    1. transitionType 各个监听事件中都会返回的一个类型值,表示当前导航的触发原因
      • 可以包含的值:["link", "typed", "auto_bookmark", "reload", ...] 多数情况下用来指引,新打开的标签页是怎么触发的
    2. chrome.webNavigation.onBeforeNavigate.addListener(details => {...}) 导航即将发生时触发
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
      • details…
    3. chrome.webNavigation.onCommitted.addListener(details => {...}) 导航提交时触发,在这个时候,document 仍然在下载,它所引用的资源也可能在下载,但是浏览器已经接受少部分文档,并决定切换到新的文档
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
      • details.transitionType 导航的原因
    4. chrome.webNavigation.onDOMContentLoaded.addListener(details => {...}) 在页面 DOM 构造完成时触发,但是DOM所引用的资源不一定加载完成
      • details.tabId 导航即将打开的 tab 的 id
      • details.url 即将打开的 url
    5. chrome.webNavigation.onCompleted.addListener(details => {...}) DOM 及其引用的资源全部加载完成时触发
      • details.tabId 发生导航的 tab 的 id
      • details.url 发生导航的 url

    6. chrome.storage

    用户数据的存储、检索、跟踪,与localStorage 相比做了很多的优化,使用时需要获取权限

    {
        "permissions": [
          "storage"
        ]
    }
    

    关键点

    1. content_script 中可以直接访问
    2. 可以是异步的,可以批量读写
    3. 可以存储对象,而不像 localStorage 只能存字符串
    4. 可以同步到 Chrome 账户,需要使用 storage.sync

    storage.sync 与 storage.local 都用来存储数据 只不过 storage.sync 可以同步到 Chrome 账户,以下以 storage.local 为例

    1. chrome.storage.onChanged.addListener((changes, namespace) => {...}) 监听存储事件
      • changes[key].newValue 更新后的值
      • changes[key].oldValue 更新前的值
    2. chrome.storage.local.get(key|keyArray, callback) 读取存储 key 可以是字符春或者数组,数组代表获取多个 key 对应的存储,key=null 获取所有存储 callback 中可以得到获取的值,必填
    3. chrome.storage.local.set(Object, callback) 设置或者耿勋存储,会触发 onChanged 事件
    4. chrome.storage.local.remove('name', callback) 移除某一个存储
    5. chrome.storage.local.clear(callback) 清除所有存储
    展开全文
  • 腻害360安全浏览器插件开发小例子,自己开发通过,非常好
  • 浏览器插件开发-通信

    2018-12-06 11:02:06
    浏览器插件开发-通信 调研资料 manifest.json 官方文档 Chrome Extension API 360浏览器的插件文档 中文, 虽然内核差不多但是不一定与 Chrome api 一致, 可以作为参考 Chrome 官方案例库 案例 如何实现网页和Chrome...

    浏览器插件开发-通信

    调研资料

    说明

    插件开发中,一般会分为四个区域

    1. page 浏览器标签页,也是我们的产品页面
    2. content_script 浏览器插件向标签页注入的脚本(也可以同时注入 css)与 page 页处于隔离状态,但是可以访问其 DOM
    3. background 浏览器插件后台脚本,运行着插件对标签页的监听函数,不点击插件按钮也会运行
    4. popup_page 点击插件按钮后的弹出页面

    1. 实现 page 与 content_script 间通信

    1. page => content_script 通信的 postMessage 实现方式

    /*
    * 通过 postMessage 通信
    * 定义脚本插入时机为 document_start 
    * 这样在 contentScript 中的 message监听事件就是在 react 组件render成功之前创建,
    * 因此在 react 组件中的 window.postMessage 事件可以在 contentScript 接收到
    
    "content_scripts": [
        {
          "matches": ["http://localhost:8273/*"],
          "run_at": "document_start", 
          "js": ["scripts/contentScripts.js"]
        }
    ],
    */ 
    
    /*
    * conetntScripts.js 
    * 由于任何的 message 事件都会接收到,所以这里需要有一个 type 做筛选
    */ 
    window.addEventListener('message', function (event) {
      if (event.source != window) return;
    
      if (event.data.type && (event.data.type == "FROM_PAGE")) {
        console.log("Content script received: " + event.data.text);
      }
    })
    
    /*
    * react page 中
    * 这里的 postMessage 事件如果是通过点击等操作触发,
    * 那么之前定义的 run_at 可以是 DOM 构建之后触发
    */
    
    class extends React.Component {
        componentDidMount() {
            window.postMessage({ type: 'FROM_PAGE', text: 'this is react page' }, '*');
        }
    };
    

    2. content_script => page 通信使用 postMessage

    /*
    * 使用 postMessage 由 content_script 向 react page 通信
    * 需要设定时机为 "run_at": "document_idle",
    */
    
    /*
    * conetntScripts.js 
    * 在这里发送一个 message,这个事件会在 DOM 加载完成触发(由 run_at 决定) 
    */ 
    window.postMessage({ type: 'FROM_CONTENT_SCRIPT', text: 'Hello from the content_script!' }, '*');
    
    /*
    * react page 中
    * 在 componentWillMount 生命周期中接收这个 message
    */
    class extends React.Component {
        componentWillMount() {
            window.addEventListener('message', function (event) {
               if (event.source !== window) {return}
    
               if (event.data.type && (event.data.type === 'FROM_CONTENT_SCRIPT')) {
                 console.log('Content script received: ' + event.data.text);
               }
             })
        }
    };
    
    

    3. content_script => page 通信使用 DOM 节点中转

    /*
    * 使用 DOM 节点通信,无论在哪个时机插入脚本,都不是很合适,
    * 需要在 react 组件中设置定时器才能拿到正确的 节点信息
    */
    
    /*
    * conetntScripts.js 
    * 在这里创建一个 DOM 节点
    */ 
    var connectTool = document.createElement('div');
    connectTool.id = 'chrome-extension-connect-tool';
    connectTool.innerText = JSON.stringify({extensionVersion: '0.0.11'});
    document.body.appendChild(connectTool);
    
    /*
    * react page 中
    * 在 componentDidMount 生命周期中拿到这个节点的数据
    */
    class extends React.Component {
        componentDidMount() {
            setTimeout(() => {
               const connectTool = document.getElementById('chrome-extension-connect-tool') || {};
               console.log(connectTool.innerText)
             }, 100)
        }
    };
    
    // 注意:不建议这样使用
    

    2. 实现 content_scriptbackground 之间的通信

    /*
    * contentScripts.js
    */ 
    
    /*
    * 链接到插件的 background,返回一个通信的端口
    * 从此,这个端口用来负责与 background 间他通信
    */ 
    var port = chrome.runtime.connect();
    
    // onMessage 用来接收 background 发过来的消息
    port.onMessage.addListener(function (details) {
      console.log(details)
    })
    
    // postMessage 用来向 background 发出消息
    port.postMessage({
      type: 'FROM_CONTENT_SCRIPT',
      eventType: 'REPORT',
      data: event.data.data
    })
    
    
    /*
    * background.js
    */ 
    
    // onConnect 监听函数会得到一个 监听器 listener,listener 会负责接下来与其他页面的通信
    chrome.runtime.onConnect.addListener(function(listener) {
        /*
        * onMessage 监听其他页面发过来的消息
        * 通过 listener.sender.url 可以区分链接来自哪个页面
        */ 
      listener.onMessage.addListener(function (details) {
        console.log(details, listener);
        // postMessage 向其他页面发送消息
        listener.postMessage({
          type: 'FROM_BACKGROUND',
          eventType: 'CERTIFICATION',
          data: {
            text: '得到了你的报告'
          }
        })
      })
    });
    
    

    2. 实现 backgroundpopup_page 之间的通信

    /*
    * popup.js    
    */
    
    // popup page 中同样可以访问 chrome.runtime, 借此创建于 background 间的通信
    var port = chrome.runtime.connect();
    
    port.onMessage.addListener(function (details) {
      console.log('popup page', details);
    })
    
    /*
    * background.js
    */ 
    
    // onConnect 监听函数会得到一个 监听器 listener,listener 会负责接下来与其他页面的通信
    chrome.runtime.onConnect.addListener(function(listener) {
        /*
        * onMessage 监听其他页面发过来的消息
        * 通过 listener.sender.url 可以区分链接来自哪个页面
        */ 
      listener.onMessage.addListener(function (details) {
        console.log(details, listener);
        if (/^chrome-extension:\/\//.test(listener.sender.url)) {
            // postMessage 向其他页面发送消息
            listener.postMessage({
              type: 'FROM_BACKGROUND',
              eventType: 'CERTIFICATION',
              data: {
                text: '得到了你的报告'
              }
            })    
        }
        
      })
    });
    
    

    除此之外,可以在 popup_page 中直接调用 background 中的函数

    /*
    * background.js 中定义函数
    */
    
    function setStorage(data, callback) {
      chrome.storage.local.set(data, callback);
    }
    
    function getStorage(key, callback) {
      chrome.storage.local.get(key, callback);
    }
    
    /*
    * popup page 中通过 getBackgroundPage 得到 backgroundWindow对象
    */
    
    chrome.runtime.getBackgroundPage(function (backgroundWindow) {
        // 通过这个window 对象使用 background 中的方法
      backgroundWindow.setStorage({ccc: 'cscscss'}, function () {
        backgroundWindow.getStorage('ccc', function (value) {
          console.log(value)
        })
      })
    });
    
    展开全文
  • 百度首页的jQuery是百度自己重构的,如果直接调用百度的jquery而没有注入完整的jquery会至这个情况,其次百度还有个模块化define也是重构的,也会导致报错;解决办法解压layer,修改入口调用 移除红色这块的代码即可...
  • chrome 浏览器插件开发

    2017-06-04 22:44:00
    一、chrome 浏览器插件开发是什么:  1 从技术上说插件只是一个存在于本地的一个网站、所以呢在插件开发的过程中用到的技术无非是 javascript 、html 、css 。   二、把当前活动页面的背景变蓝:  1 ...
  • 图书同步 带有浏览器插件开发的 Web 应用程序,用于在不同浏览器之间同步书签。
  • Android浏览器插件开发

    千次阅读 2011-03-03 19:58:00
    Android浏览器插件开发
  • C++跨浏览器插件开发的通用框架

    千次阅读 2019-07-16 09:12:32
    随着主流插件技术NPAPI,ActiveX的逐渐弃用,跨浏览器插件开发,需要寻找到 替代解决方案。通过实现支持Websocket协议的中间件,能完美的替换firebreath 跨浏览器框架。 跨浏览器插件开发框架 ...
  • Chrome浏览器插件开发的准备工作 manifest.json配置介绍 页面如何注入scripts文件 一、 浏览器插件的介绍  浏览器插件是一种遵循一定规范的应用程序接口编写出来的,是对其进行起一个补充作用的程序,如播放...
  • 第一次做浏览器插件开发,总结了一些经验,效果还是挺好的。
  • 2014/11/16 Google Chrome 浏览器插件开发学习 因笔记存有文件,不便发表在cnblogs上,请到evernote里找笔记 "Google Chrome 浏览器插件开发学习" 查看
  • 浏览器插件开发-manifest文件解读

    千次阅读 2018-12-06 10:56:39
    浏览器插件开发-manifest文件解读 调研资料 manifest.json 官方文档 Chrome Extension API 360浏览器的插件文档 中文, 虽然内核差不多但是不一定与 Chrome api 一致, 可以作为参考 Chrome 官方案例库 案例 如何实现...
  • QT浏览器插件开发入门

    千次阅读 2014-12-24 21:01:37
    QT浏览器插件开发入门_百度文库 http://wenku.baidu.com/view/427755d13186bceb19e8bbbf.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,560
精华内容 4,224
关键字:

浏览器插件开发