Side Menu
分类目录
   

适用于为知笔记Windows客户端4.5版本的插件开发API文档

4.4 版本插件开发API文档见:http://www.wiz.cn/manual/plugin/

为知笔记从4.5版本开始,升级Chrome内核版本为49,并采用多进程模式。带来的一个影响就是大部分插件需要升级才可以在4.5下面使用。

由于采用多进程模式,插件将无法直接访问笔记渲染浏览器的DOM对象,取而代之的,是通过WizChromeBrowser这样一个对象,和浏览器进行交互,例如执行脚本并获得返回值。

一个例子:在插件代码中访问当前笔记的文字:
4.5之前的版本代码:

    var noteDoc = objApp.Window.CurrentDocumentHtmlDocument;    //HTML Document
    //4.5之前的版本,我们可以直接获得当前笔记所在浏览器的document对象,并获得body中的文字。
    alert(noteDoc.body.innerText);

4.5以及之后的版本代码:

    var objBrowser = objApp.Window.CurrentDocumentBrowserObject;
    //4.5以及之后的版本,无法获得笔记所在浏览器的对象,而是获得了一个WizChromeBrowser的对象
    //通过WizChromeBrowser提供的方法,我们可以要求笔记所在的浏览器,执行一段脚本,并将脚本的返回值返回给我们。
    //WizChromeBrowser和浏览器交互的时候,都是异步进行的,结果通过回调函数返回。
    objBrowser.ExecuteScript("document.body.innerText", function(text) {
        alert(text);
    });

从上面的例子可以看出插件如果要和笔记所在浏览器进行交互,则必须采用发送消息的形式来进行。

下面是WizChromeBrowser的定义:

interface IWizChromeBrowserObject : IDispatch{
    // 执行一个脚本,异步执行
    [id(9), helpstring("method ExecuteScript")] HRESULT ExecuteScript([in] BSTR bstrScript, [in] VARIANT callback);
    // 执行一个.js文件里的所有脚本,异步执行
    [id(10), helpstring("method ExecuteScriptFile")] HRESULT ExecuteScriptFile([in] BSTR scriptFileName, [in] VARIANT callback);
    // 执行一个函数,无参数,异步执行
    [id(11), helpstring("method ExecuteFunction0")] HRESULT ExecuteFunction0([in] BSTR functionName, [in] VARIANT callback);
    // 执行一个函数,输入参数有一个,异步执行
    [id(12), helpstring("method ExecuteFunction1")] HRESULT ExecuteFunction1([in] BSTR functionName, [in] VARIANT param1, [in] VARIANT callback);
    // 执行一个函数,输入参数有两个,异步执行
    [id(13), helpstring("method ExecuteFunction2")] HRESULT ExecuteFunction2([in] BSTR functionName, [in] VARIANT param1, [in] VARIANT param2, [in] VARIANT callback);
    // 执行一个函数,输入参数有三个,异步执行
    [id(14), helpstring("method ExecuteFunction3")] HRESULT ExecuteFunction3([in] BSTR functionName, [in] VARIANT param1, [in] VARIANT param2, [in] VARIANT param3, [in] VARIANT callback);
    // 执行一个函数,输入参数有四个, 异步执行
    [id(15), helpstring("method ExecuteFunction4")] HRESULT ExecuteFunction4([in] BSTR functionName, [in] VARIANT param1, [in] VARIANT param2, [in] VARIANT param3, [in] VARIANT param4, [in] VARIANT callback);
};

WizChromeBrowser是为知里面每一个Chrome浏览器所内置的一个对象,该对象可以在脚本中传递。对于笔记所在的浏览器,则可以通过为知的接口获得该对象(例如通过objApp.Window.CurrentDocumentBrowserObject获得当前笔记所在的浏览器对象)。

WizChromeBrowser的主要方法:

  • ExecuteScript:在WizChromeBrowser所属的浏览器内,执行一段脚本。结果通过callback返回。
  • ExecuteScriptFile:和ExecuteScript类似,只不过可以直接执行一个本地js文件里面的脚本。
  • ExecuteFunction等:在WizChromeBrowser所属浏览器内,执行一个函数。返回值通过callback返回。

在插件中更改笔记内容(加粗当前选中的文字):
4.5之前的版本代码:

var doc = objApp.Window.CurrentDocumentHtmlDocument;
doc.execCommand("bold", false);

4.5以及之后的版本代码:

objApp.Window.CurrentDocumentBrowserObject.ExecuteScript("document.execCommand('bold', false);", function(ret){});

获取笔记中特定的元素(大纲插件)
4.5之前的版本代码:

function getBookmarks(doc){
    if(!doc)
      return ;
    //
    var arrLinks = doc.anchors;
    for(var i = 0; i <arrLinks.length; i++){
        var elem = arraLinks[i];
        var elemName = elem.name;
        …
    }
}

4.5以及之后的版本代码:

/* getBookmarks.js*/
(function(){
    var added = false;
    var arrLinks = document.anchors;
    var arrayBookmarkName = [];
    var jsonelem = [];
    //
    for (var i = 0; i < arrLinks.length; i++) {
        var elem = arrLinks[i];
       // 获取DOM节点的属性值
        var name = elem.name;
        if (name == null || name == "")
            continue;
        //
       …
        //
        arrayBookmarkName.push(name);
    }
    return arrayBookmarkName;
}());

/*Outline.html*/
var scriptFile = pluginPath + "getBookmarks.js";
objBrowser.ExecuteScriptFile(scriptFile, function(ret){
      if(ret && ret.length > 0){
             for(var i = 0; i < ret.length; i++){
                  var elemName = ret[i];  
                  …
             }
      }
});

注意事项:
不管是执行脚本的返回值,还是执行函数的参数,只能是以下几种类型:

  • 基本数据类型,包含数字,字符串,日期,布尔值,空值
  • 基本数据类型组成的数组
  • COM对象

对于DOM对象,例如HTML Document,Window对象,都不能直接作为参数或者返回值传递。例如下面的代码无法执行:

objApp.Window.CurrentDocumentBrowserObject.ExecuteScript("document.body", function(body) {
    alert(body.innerText);
});

因为document.body 不属于上面所允许的类型,因此无法作为返回值传递。
同样,js内部的JSON对象,也不能进行传递。下面的代码同样是非法的:

objApp.Window.CurrentDocumentBrowserObject.ExecuteScript("{'a':'a'}", function(obj) {
    alert(obj.a);
});

如果要传递一个JSON对象,可以将JSON序列化成字符串。在使用的时候再重新解析成一个JSON对象。
示例代码:

function pluginXXX_GetElemAttributes(elemid){
    var elem = document.getElementById(elemid);
    if(elem){
         var jsonelem = {
              "tagName": elem.tagName.toLowerCase(),
              "offsetTop": elem.offsetTop,
              "innerText": elem.innerText
         };
         var json = JSON.stringify(jsonelem);
         return json;
    }
    return null;
}
//将pluginXXX_GetElemAttributes函数注入到目标浏览器内
objBrowser.ExecuteScript(pluginXXX_GetElemAttributes.toString(), function(ret){
       //调用目标浏览器内注入的函数
      objBrowser.ExecuteFunction1("pluginXXX_GetElemAttributes", "test", function(ret){
             if(ret && ret.length > 0){
                  var att = JSON.parse(ret);
                  var tagName = att.tagName;
                  var offsetTop = att.offsetTop;
                  var innerText = att.innerText;
             }
      });
});

其他注意事项:

声明插件支持的版本

  • 在plugin.ini文件的[Common]区段下添加字段“SupportVersion”,此字段值大于等于2的情况下,4.5以及之后版本启动时会加载此插件。

部分接口改变,从传递document对象到传递WizChromeBrowser对象作为参数

  • 定义的一些Wiz笔记响应事件
function WizOnHtmlDocumentCompleteEx(objBrowser, objWizDocument) {
    eventsHtmlDocumentCompleteEx.dispatch2(objBrowser, objWizDocument);
}
function WizOnDocumentBeforeChange(objBrowser, objWizDocumentOld, objWizDocumentNew) {
    return eventsDocumentBeforeChange.dispatch3(objBrowser, objWizDocumentOld, objWizDocumentNew);
}
function WizOnDocumentAfterChange(objBrowser, objWizDocumentOld, objWizDocumentNew) {
    return eventsDocumentAfterChange.dispatch3(objBrowser, objWizDocumentOld, objWizDocumentNew);
}
function WizOnDocumentBeforeEdit(objBrowser, objWizDocument) {
    return eventsDocumentBeforeEdit.dispatch2(objBrowser, objWizDocument);
}
function WizOnDocumentAfterEdit(objBrowser, objWizDocument) {
    return eventsDocumentAfterEdit.dispatch2(objBrowser, objWizDocument);
}

eventsDocumentBeforeEdit 和 eventsDocumentAfterEdit 消息在Wiz 4.5.8以及之后版本中失效

  • IWizExplorerApp
HRESULT GetPluginAppPath([in] IDispatch* pBrowserObjDisp, [out, retval] BSTR* pVal); 
HRESULT GetPluginAppGUID ([in] IDispatch* pBrowserObjDisp, [out, retval] BSTR* pVal);
HRESULT GetHtmlDocumentPath([in] IDispatch* pBrowserObjDisp, [out, retval] BSTR* pVal);
// 以下三种方法均为异步执行
HRESULT PluginLocalizeHtmlDialog([in] IDispatch* pBrowserObjDisp);
HRESULT LocalizeHtmlDocument([in] BSTR bstrLanguageFileName, [in] IDispatch* pBrowserObjDisp);
//同LocalizeHtmlDocument方法,返回值通过callback返回
HRESULT LocalizeHtmlDocument2([in] BSTR bstrLanguageFileName, [in] IDispatch* pBrowserObjectDisp, [in] VARIANT callback);
//添加方法 SetNoteModifiedByPlugin, 插件修改笔记后调用此方法,作为修改标志
HRESULT SetNoteModifiedByPlugin();
//添加方法 IsCurrentDocumentEditing, 获取当前显示的笔记是否处于编辑状态
HRESULT IsCurrrentDocumentEditing([out, retval] VARIANT_BOOL* pVb);

一个例子:对话框类型插件本地化
4.5之前版本代码:

var iniPath = pluginPath +"plugin.ini";
LocalizeHtmlDocument(iniPath, document);  //同步执行

4.5以及之后的版本代码:

LocalizeHtmlDocument(iniPath, WizChromeBrowser);   //异步执行
  • IWizExplorerWindow
// 属性 CurrentDocumentHtmlDocument不再使用, 改为使用 CurrentDocumentBrowserObject, 获取当前正在显示的笔记所在浏览器的 WizChromeBrowser 类型对象
HRESULT CurrentDocumentBrowserObject([out, retval] IDispatch** pVal);
// 方法 ShowHtmlDialog 与 ShowHtmlDialog2 不再使用,改为使用 ShowHtmlDialogEx。
// vbModal 必为 false,vParam为传给对话框的参数,可通过方法 GetHtmlDialogParam 来获得。 此函数为异步调用,结果通过vCallBack返回。
HRESULT ShowHtmlDialogEx([in] VARIANT_BOOL vbModal, [in] BSTR bstrTitle, [in] BSTR bstrURL, [in] LONG nWidth, [in] LONG nHeight, [in] BSTR bstrExtOptions, [in] VARIANT vParam, [in] VARIANT vCallback);
HRESULT CloseHtmlDialog([in] IDispatch* pBrowserObjDisp, [in] VARIANT vRet);
HRESULT GetHtmlDialogParam([in] IDispatch* pBrowserObjDisp, [out, retval] VARIANT* pvParam);
HRESULT GetHtmlDialogHWND([in] IDispatch* pBrowserObjDisp, [out, retval] OLE_HANDLE* phHWND);
HRESULT SetDialogResult([in] IDispatch* pBrowserObjDisp, [in] VARIANT vRet);
HRESULT CloseSelectorWindow([in] IDispatch* pdispSelectorBrowserDisp);

一个例子:在对话框插件中打开另一个html页面(自定义快速搜索)
4.5以前版本代码:

/*add_quick_search.htm*/
…
var retString;
//填充 retString
…
//
objWindow.CloseHtmlDialog(document, retString);
…
/*customize_quick_searches.htm*/
…
// ret即为add_quick_search.htm中retString变量
var ret = objApp.Window.ShowHtmlDialog("", objApp.AppPath + "files\\customize_quick_searches\\add_quick_search.htm", 500, 500, "");
//
…

4.5以及之后版本代码:

/*add_quick_search.htm*/
…
var retString;
//填充 retString
…
//
objWindow.CloseHtmlDialog(WizChromeBrowser, retString);
…
/*customize_quick_searches.htm*/
…
// ret即为add_quick_search.htm中retString变量, ShowHtmlDialogEx 第一个参数必为false, 弹出非模态对话框
objApp.Window.ShowHtmlDialogEx(false, "", objApp.AppPath + "files\\customize_quick_searches\\add_quick_search.htm", 500, 500, "", null, function(ret){
      //
      if(ret && ret.length > 0){
      …
      }
});
//
…
  • IWizHtmlEditorApp
// 属性 EditorDocument不再使用, 改为使用 EdtorBrowserObject, 获取当前正在显示的笔记所在浏览器的 WizChromeBrowser 类型对象
HRESULT EditorBrowserObject([out, retval] IDispatch** pVal);
HRESULT LocalizeHtmlDocument([in] BSTR bstrLanguageFileName, [in] IDispatch* pBrowserObjectDisp);
HRESULT GetHtmlDocumentPath([in] IDispatch* pBrowserObjectDisp, [out, retval] BSTR* pVal);

双浏览器变单浏览器

  • 4.5以前版本,使用一个浏览器加载阅读状态下的笔记, external 对象即 WizExplorerApp 对象;使用另一个浏览器加载编辑状态下的笔记, external 对象为 IWizHtmlEditorApp 类型,所属文件 WizTools.idl。4.5以及之后版本,改为使用一个浏览器来加载阅读状态与编辑状态下的笔记,external 对象类型为 IWizHtmlEditorApp。

一个例子:阅读状态下,获取当前数据库的路径(为知助手)
4.5以前的版本代码:

var objDatabase = external.Database;
var databasePath = objDatabse.DatabasePath;

4.5以及之后的版本代码:

/* 注入脚本文件: KMContent.js*/
var objKMHelperApp;
var objKMHelperDatabse;
var objKMHelperPluginBrowser;
//
function KMInit(app, pluginBrowser) {
    if (!app || !pluginBrowser)
        return;
    //
    objKMHelperApp = app;
    objKMHelperDatabase = app.Database;
    var databasePath = objKMHelperDatabase.DatabasePath;
    //
    objKMHelperPluginBrowser = pluginBrowser;
    …
}

/* 插件文件:KMHelper.js*/
function initEvents() {
/*
向Wiz注册一个事件,响应文档完成的消息。在Wiz内打开一个html文件的时候(例如阅读文档),如果Html文件打开完成,则调用这个方法。
*/
    eventsHtmlDocumentComplete.add(KMOnHtmlDocumentComplete);
    …
}
// 笔记加载完成, objBrowser 为当前显示的笔记所在浏览器的 WizChromeBrowser 对象
function KMOnHtmlDocumentComplete(objBrowser) {
    if (!objBrowser)
        return;
    //
    var pluginPath = objApp.GetPluginPathByScriptFileName("KMHelper.js");
    var contentScriptPath = pluginPath + "KMContent.js";
    //
    objBrowser.ExecuteScriptFile(contentScriptPath, function (ret) {
        // 执行注入脚本的 KMInit 方法, 将 WizExplorerApp, WizChromeBrowser 对象传到笔记所在浏览器中
        objBrowser.ExecuteFunction2("KMInit", objApp, WizChromeBrowser, function (ret) {
              …
        });
    });
}

笔记所在浏览器的 external 对象没有获取 IWizDatabase 对象的方法。从上例可看出,可调用注入脚本的函数,将 WizExplorerApp 对象传到笔记所在浏览器中,再获取数据库对象,由此也可以使用 WizExplorerApp 对象的其他方法。

上例中还将插件所在浏览器的 WizChromeBrowser 对象传到笔记所在浏览器中,这样可以通过此对象执行插件环境下的脚本。
一个例子: 鼠标移开后自动关闭目录设置界面(为知助手)

/*注入脚本文件 : KMContent.js*/
function KMOnSetAsContentClick() {      //点击设置目录图标,弹出目录设置界面
    // 设置目录逻辑
    …
    // 添加自动关闭窗口的计时器, objKMHelperPluginBrowser为插件所在浏览器的 WizChromeBrowser 对象
    objKMHelperPluginBrowser.ExecuteFunction1("KMAutoCloseContentWindow", true, null);
} 
function KMAutoCloseContentWindow() {
    //关闭目录设置窗口逻辑
    …
    //去除计时器, objKMHelperPluginBrowser为插件所在浏览器的 WizChromeBrowser 对象
    objKMHelperPluginBrowser.ExecuteFunction1("KMAutoCloseContentWindow", false, null);
}

/*插件文件: KMHelper.js*/
function KMAutoCloseContentWindow(isAddAfterRemove) {
    //
    objWindow.RemoveTimer("KMAutoCloseContentWindowTimer");
    if (isAddAfterRemove) {
        objWindow.AddTimer("KMAutoCloseContentWindowTimer", 1000);  //KMAutoCloseContentWindowTimer, 计时器回调函数名
    }
}
function KMAutoCloseContentWindowTimer() { 
    var objBrowser = objWindow.CurrentDocumentBrowserObject;
    if (!objBrowser)
        return;
    //
    objBrowser.ExecuteFunction0("KMAutoCloseContentWindow", null);
}

一个例子: 阅读状态下,插件对笔记的修改与保存(为知助手)
4.5以前版本代码:

this.colorword = function (doc, node, keyword, callback) {
        if (node.childNodes == undefined)
            return false;
        //
        if (node.id == "wizKMHighlighterSpan_t_t")
            return false;
        //
        for (var i = 0; i < node.childNodes.length; i++) {
            var childNode = node.childNodes[i];
            if (childNode.nodeType == 3) {
                //childNode is #text
               …
                //
                re = new RegExp('(' + keyword.word + ')', 'i');
                //
                var forkNode = doc.createElement("span");
                forkNode.id = "wizkm_highlight_tmp_span";
                forkNode.innerHTML = childNode.data.replace(re, '<div id="wizKMHighlighterSpan_t_t" style="background-color:' + keyword.bgColor + ';color:' + keyword.foreColor + '; cursor:pointer; border-bottom: 1px #00c dashed;">$1</div>');
                node.replaceChild(forkNode, childNode);
                //
                …
                //
               return true;
            } 
            …
        }
        return false;
    } 
    //
    …
    // 
   function KMSetDocumentModified(doc) {
        if (!doc)
              return;
        var body = doc.body;
        if (!body)
              return;
        //
        body.setAttribute(g_KMDocumentModifiedAttributeName, "1", 0);
   }
   …
   function KMIsDocumentModified(doc){
        if(!doc)
             return;
       //  
        var body = doc.body;
        if (!body)
              return;
        //   
        return body.getAttribute(g_KMDocumentModifiedAttributeName, 0) == "1";
   }
   function KMSaveDocument(objHtmlDocument, objWizDocument) {
       if (!objWizDocument)
           return;
       if (!KMIsDocumentModified(objHtmlDocument))
           return;
       //
    …
    }

4.5以及之后版本代码:

/*KMContent.js*/  
//注入脚本 
this.colorword = function (node, keyword, callback) {
        if (node.childNodes == undefined)
            return false;
        //
        if (node.id == "wizKMHighlighterSpan_t_t")
            return false;
        //
        for (var i = 0; i < node.childNodes.length; i++) {
            var childNode = node.childNodes[i];
            if (childNode.nodeType == 3) {
                //childNode is #text
               …
                //
                re = new RegExp('(' + keyword.word + ')', 'i');
                //
                var forkNode = document.createElement("span");
                forkNode.id = "wizkm_highlight_tmp_span";
                forkNode.innerHTML = childNode.data.replace(re, '<wiz_tmp_plugin_tag id="wizKMHighlighterSpan_t_t" style="background-color:' + keyword.bgColor + ';color:' + keyword.foreColor + '; cursor:pointer; border-bottom: 1px #00c dashed;">$1</wiz_tmp_plugin_tag>');
                node.replaceChild(forkNode, childNode);
                //
                …
                //
               return true;
            } 
            …
        }
        return false;
    } 
    //
    …
    //
    function KMSetDocumentModified(){
           objKMHelperApp.SetNoteModifiedByPlugin();
     }
     …
  • 4.5以前版本,在为知笔记默认编辑器下使用的插件,其保存操作是同步执行,各个插件按顺序对笔记进行保存。4.5以及之后版本,插件的保存操作是异步执行,各插件按顺序对笔记进行保存时,可能会丢失其他插件对笔记的修改。所以从4.5版本开始,保存操作由内部编辑器来完成, 插件修改笔记之后,只需调用 WizExplorerApp 对象的SetNoteModifiedByPlugin方法,设置修改标志即可。

注意: SetNoteModifiedByPlugin 方法应用于阅读状态下插件对笔记做出修改时进行标记。编辑状态下为知笔记编辑器会对DOM修改进行捕获,所以不需插件单独设置修改标记。

  • 插件在操作笔记时可能会添加一些临时DOM节点,需在保存时进行删除, 像上例中创建的高亮节点。插件可以使用为知笔记定义的自定义标签来创建此类节点,内部编辑器保存时会将此类节点删除。根据删除类型,定义了以下两种自定义标签:
  1. 保存时删除整个临时节点
    使用标签<wiz_tmp_tag></wiz_tmp_tag>创建临时节点的顶层节点,字节点不需要再使用此标签创建。
  2. 保存时删除整个临时节点,但保留节点文本
    使用标签<wiz_tmp_plugin_tag></wiz_tmp_plugin_tag>来创建临时节点的顶层节点,字节点不需要再使用此标签创建。

此上两种标签不可嵌套使用,否则会产生未知错误,只需用这两种标签创建相应的顶层节点即可。

笔记所在浏览器中, 避免全局脚本命名冲突

  • 所有的插件注入脚本都在笔记所在浏览器下执行,避免出现变量和函数名的命名冲突,从而导致发生不可预期的错误,建议对变量及函数的名称添加前缀或者后缀。

 

mac版升级后,找不到之前本地的笔记了怎么办?

若您之前安装是在AppStore商店进行的安装,升级时是从我们官网下载的DMG安装包,因为两种安装方式在本地的数据存储目录不同,所以安装新版后,无法读取到之前版本里未上传的那部分笔记,可以通过下面的方法试着找回。若升级前将之前从商店安装的为知笔记卸载了,无法找到AppStore下面的本地笔记存储目录,未上传的笔记将不能找回。
①先找到两个电脑里的本地文件夹:
AppStore版本使用了沙盒,文件存放在:  ~/Library/Containers/cn.wiz.wiznoteformac/Data/Documents
DMG版本没有沙盒,文件存放在个人目录下的 ~/.wiznote 目录中(隐藏文件夹,请先打开可显示隐藏文件夹的开关,再从路径中寻找)。
备注:~表示用户home目录, 例如/User/xiaoming  。
②将DMG版本对应的 ~/.wiznote 目录下的所有文件先剪切到其他地方,然后将AppStore版本对应的~/Library/Containers/cn.wiz.wiznoteformac/Data/Documents目录下的所有文件复制粘贴到 ~/.wiznote 目录下(注意不要复制反了)。然后开启为知笔记,应该能找到之前未上传的笔记。
2017年之后免费账号下新笔记和新编辑的笔记无法上传,找回笔记后可以购买VIP将笔记上传至云端。

为知笔记 Windows 版

为知笔记 Windows最新版本下载

最新版本:4.9.3

下载地址:http://url.wiz.cn/u/windows

适用于:Windows XP、Windows 2003、Windows 7、Windows 8、Windows 10 等,为Intel超极本优化。

【新增】全新同步方式

如何体验更快的同步速度?

点击 Windows 客户端右上角菜单 – 选项 – 同步 – 勾选「启用新的同步方式」
注意:一旦开启新的同步方式后
  • 不能再退回到旧的同步方式。
  • 其他平台的客户端必须更新到最新版,否则其他平台无法正常使用
以下为各端最新版本:
  • 为知笔记 Windows 4.9.3  下载
  • 为知笔记 Android 7.6.8  下载
  • 为知笔记 iOS 7.6.7   下载
  • 为知笔记 Mac 2.5.7 下载

4.9 版本

4.9.3 更新日志

下载地址:http://url.wiz.cn/u/windows

  • 优化笔记渲染速度
  • 优化 excel 附件打开速度
  • 优化复制移动目录时,保留空目录
  • 修复无法打开搜索结果中的笔记的问题
  • 修复新窗口打开笔记时的无响应问题
  • 修复旧版本客户端创建笔记中包含代码在新版本上阅读异常问题
  • 修复从 Word 复制内容中包含图片粘贴时无图片问题
  • 修复从 Word 复制带有标题样式的内容出现 Undefined 字样问题
  • 修复 Markdown 笔记插入图片后的图片异常问题
  • 修复在线搜索关键字高亮不准确的问题
  • 修复进程无法退出导致不能正常关机的问题
  • 修复取消搜索后笔记中关键字依旧高亮的问题
  • 修复复制文本后重复粘贴的问题(默认编辑器)
  • 修复新建任务列表时出现的重复创建问题
  • 修复由于笔记中表格复杂嵌套导致的内容不显示问题
  • 修复标题中含有特殊字符导致的复制到其他账户失败问题
  • 修复表格无法复制粘贴整行的问题
  • 修复单元格插入图片后无法编辑的问题
  • 修复代码段中的内容鼠标滑动无法全部选中问题
  • 优化有序列表和checklist 混用时数字和复选框之间的距离

4.8 版本

4.8.5 更新日志

(旧版盒子用户请下载该版本)

下载地址:http://get.wiz.cn/wiznote-windows-x86-2017-08-10.exe

  • 修复 MathJax 公式不换行问题
  • 优化选中内容中包含 code 时粘贴到 Word 中,出现 textarea 的问题
  • 修复复制内容中包含空格,粘贴后空格丢失问题
  • 修复摘要中出现异常字符问题
  • 修复多个代码段同时复制,粘贴后内容异常问题
  • 修复书签内容过长,在编辑模式下无法删除书签的问题
  • 修复点击提示文字切换到本地搜索操作不生效的问题

4.8.4 更新日志

下载地址:https://get.wiz.cn/wiznote-windows-x86-2017-07-21.exe

  • 修复从浏览器粘贴内容样式消失的问题(IE浏览器、Edge浏览器、Firefox 浏览器在复制内容时,由于浏览器的控制,丢弃了部分样式,建议使用 Chrome 浏览器)
  • 修复代码和富文本粘贴的一些异常问题
  • 修复多行含空行文本在已有内容后面粘贴,内容合并且顺序错乱的问题
  • 修复Markdown 笔记中表格和代码段的间距过大的问题
  • 修复从代码编辑工具中复制代码粘贴,丢失缩进的问题
  • 修复发博客代码样式异常的问题
  • 修复安装在非系统盘的情况下无法覆盖安装的问题
  • 修复同一张图片,第二次编辑后无法更新的问题
  • 修复部分笔记阅读时字号变大问题
  • 修复编辑状态下关闭标签页崩溃问题
  • 修复 checklist 和 list 混用导致的异常问题
  • 修复搜索高亮部分在代码段中导致无法复制的问题;
  • 修复本地数据加密情况下修改账户邮箱后个人笔记数据无法打开的问题
  • 修复异常退出问题

4.8.1 更新日志

功能预览:http://www.wiz.cn/changelog-48

下载地址:https://get.wiz.cn/wiznote-windows-x86-2017-06-21.exe

  • 新增 – 三种主题可选择
  • 新增 – 格式刷功能
  • 新增 – 全新插入代码功能
  • 新增 – Markdown 支持 todo 语法
  • 优化待办清单,支持缩进
  • 修复了搜索历史按下方向键无法正常选择和关闭的问题
  • 修复了个人笔记编辑时点击「有新版本」可能导致当前内容异常的问题
  • 修复了导出 PDF 后部分代码无法显示的问题
  • 修复了导入文件时弹窗中提示「没有选择文件夹」的问题
  • 修复了Markdown笔记中无法正常显示附件快捷方式图片的问题
  • 修复了阅读较长的笔记时点击编辑,笔记跳回到开头的问题
  • 修复了小尺寸屏幕下无法关闭新功能推广banner的问题
  • 修复了个人备注列表的样式异常问题
  • 修复了复制后多次粘贴的 Checklist 无法勾选的问题
  • 修复了创建群组笔记时自动到「未分类」目录下的问题
  • 修复了Markdown语法中引用块无法正常结束的问题
  • 修复了目录栏底部滚动条异常问题

4.7 版本

4.7.1001 更新日志

下载地址:https://get.wiz.cn/wiznote-windows-x86-2017-06-05.exe

  • 修复样式上传乱码问题
  • 新同步方式优化:同步过程中反馈token失效,停止此次同步

4.7.1000 更新日志

  • 修复笔记评价星级、笔记列表样式、便笺等显示异常的问题;
  • 修复了任务笔记中有内容,而任务清单小工具上无内容的问题
  • 修复 Markdown 笔记发送到博客,图片丢失的问题;
  • 修复了旧版本为知盒子无法使用最新客户端上传附件的问题;
  • 修复了移动笔记后无法使用关键词搜索的问题;
  • 优化了添加名称过长的附件时的截断名称提示;
  • 优化了一些体验细节;

4.7.999 更新日志

­

// //

  • 新增附件列表空白处点击右键可选择「全部另存为」功能;
  • 修复个别附件上传异常的问题;
  • 修复大纲中的文字没有对html标签进行转义的问题;
  • 修复VIP过期或试用期过期的同步提示;
  • 修复合并笔记后附件链接失效的问题;
  • 修复某些版本不提示自动升级的问题;

4.7.4 更新日志

  • 修复无法自动升级的问题
  • 修复增量同步的一些异常
  • 修复访问为知盒子下载和上传笔记异常问题
  • 修复笔记修改标题后无法编辑的问题
  • 修复笔记下载附件时可能引起的异常问题

4.7.2 更新日志

  • 支持全新的同步方式
  • 优化目录下无笔记和搜索无结果的提示
  • 优化大纲样式
  • 修改笔记创建时间和编辑时间,可同步到服务器(小伙伴们可以补记日记啦)
  • 修复团队成员释放笔记后其他人阅读时依旧提示有人在编辑的问题
  • 修复按属性搜索无附件笔记时弹出的语句异常问题

4.6.5 更新日志

  • 修复使用中文输入法添加标签引起的英文标签异常问题
  • 修复新窗口中创建的笔记回车后无法自动添加标题问题
  • 修复设置双击或单击展开目录树在只展开一个节点的情况下不生效的问题
  • 修复新建任务列表中的任务项不能勾选的问题
  • 修复 Markdown 笔记导出 mht、发布博客、导出为 PDF 异常问题
  • 修复上下滚动笔记可能出现横向滚动条问题
  • 修复笔记标题中含有特殊字符导致的无法分享问题

4.6.2 更新日志

  • [简洁] 主题清新变身
  • 全新的标签页交互方式
  • 目录展开方式,可设置为单击或双击
  • 下载笔记数据时可同时下载附件
  • 优化升级 VIP 提示频率
  • 修复在编辑状态下未修改笔记时异常上传导致的流量超出问题
  • 修复 Ctrl+E、Alt+Q、Alt+E、Ctrl+O 快捷键失效问题
  • 修复笔记信息中 URL 过长导致显示异常问题
  • 修复笔记属性信息中无法修改或添加 URL 的问题
  • 修复繁体中文语言版本无法新建日记的问题
  • 修复 Markdown 笔记中注释部分无法换行的问题
  • 修复首行输入 tab 时插入的空格数量不正确的问题
  • 修复剪切内容后无法使用 Ctrl+Z 撤销的问题
  • 修复搜索结果的 Markdown 笔记中关键字不高亮的问题
  • 修复 Markdown 笔记另存为 PDF 时的扩展名问题

4.5.9 更新日志

  • 升级笔记外链分享,以避免在微信下无法查看的问题。
  • 编辑模式下点击图片,光标会移动到图片后面,以方便删除图片。
  • 恢复笔记背景色设置功能。
  • 修复了 Markdown 注释语法中的中文不能自动换行的问题。
  • 修复了免费用户上传笔记提示文字异常问题。
  • 修复了一些神奇的bug。

注意事项 4.5 版本不兼容之前的某些插件,已支持4.5版本的插件为:为知助手、客服插件、本地证书清理插件、Wiz.Editor.md、百度编辑器、标题清理器、统计视图。如果你常使用的插件无法在4.5版本中正常运行,可以回退到4.4版本,待插件作者升级插件后再升级为知笔记Windows客户端。

近期更新

4.5: 新增绝密群组,优化UI布局 4.4: 全新表格,新增本地笔记数据保护 4.3:升级浏览器内核,原始支持另存为PDF 4.2 及之前版本

Chrome 浏览器网页剪辑器

方法1:点击进入Chrome市场安装   

方法2:下载并手动安装   

Chrome网页剪辑器本地安装说明   

版本:4.0.9 (2017-08-28 更新)

更新日志

  • 新增网络协议切换选项(由于公司管理制度被禁止 https 协议的用户可在选项中切换为 http)
  • 修复了插件无法登录的问题
  • 修复了添加标签时模糊查询的备选标签异常的问题
  • 优化了一些体验问题

安装说明

如果能够访问 Chrome 扩展市场,搜索 「为知笔记」,点击安装,根据步骤操作即可。
本地安装

  1. 点击这里下载 chrome 扩展,解压缩
  2. 打开 Chrome 浏览器,点击右上角「菜单」-「设置」-「扩展程序」,或使用 Chrome 浏览器访问此地址:chrome://extensions/
  3. 将刚刚解压得到的 crx 文件,拖放到窗口,弹出提示要求「是否确认安装」,选择「是」

使用说明

安装了为知笔记网页剪辑器后,可以看到在工具栏或插件栏上出现为知笔记的图标。
点击该图标,出现对话框,如下图所示:

输入为知笔记账号和密码,即可进入剪辑界面。若无为知账号,可以“创建为知笔记账号”。
进入后可以看到如下图所示界面:

QQ20150923-1

  • 标题:默认为网页标题,可修改;
  • 文件夹:默认为『我的笔记』,可以展开修改;点击『刷新』可更新文件夹
  • 备注:给剪辑的网页正文下方添加备注信息;
  • 保存方式:『保存到本地』(Chrome 45 以上或 64位操作系统Chrome 不支持此功能),『保存到云端』无需安装客户端即可保存到自己的为知笔记中;
  • 保存整页处下拉菜单:有多种保存方式,如保存整页、保存文章、保存选择部分,保存URL等。

注意:

1.加载完扩展之后,已经打开的页面需要手动刷新一下才可以使用
2.chrome 45 以上版本停止对 NPAPI 支持,将无法把网页保存至本地
3.chrome 45 以下可使用『保存到本地』功能,首先确保安装最新版的为知笔记windows客户端,其次在某些高版本Chrome中,需要在浏览器地址栏输入chrome://plugins/,点击始终允许并重启浏览器


在Chrome 42版本中chrome://plugins/页面中可能没有wiz,需先启用NPAPI插件,打开chrome://flags/#enable-npapi 启用,再去查看chrome://plugins/页面。

npapi

 

 

关键词:Chrome 浏览器 插件 chrom

 

 

为知笔记 Mac 版

下载地址

最新版本 V2.5.7   http://url.wiz.cn/u/mac

2.5.x 更新日志

【新增】全新同步方式

如何体验更快的同步速度?

点击菜单 – 偏好设置 – 同步 – 勾选「启用新的同步方式」
注意:一旦开启新的同步方式后
  • 不能再退回到旧的同步方式。
  • 其他平台的客户端必须更新到最新版,否则其他平台无法正常使用
以下为各端最新版本:
  • 为知笔记 Windows 4.8.5  下载
  • 为知笔记 Android 7.6.5  下载
  • 为知笔记 iOS 7.6.4   下载
  • 为知笔记 Mac 2.5.7 下载

2.5.7

下载地址:http://url.wiz.cn/u/mac

  • 修复点击搜索结果笔记程序无响应的问题
  • 修复部分代码区域显示异常问题
  • 进行了一些优化

2.5.6

  • 新增 格式刷功能
  • 新增 笔记置顶功能
  • 新增 Markdown Checkbox 语法支持
  • 优化群组笔记同步速度
  • 优化插入代码功能
  • 修复了一些编辑方面的问题

2.5.5

(旧版盒子用户请下载该版本)
  • 修复一些同步异常问题

2.5.3

  • 修复笔记搜索结果正文关键字不高亮的问题
  • 修复设置默认用编辑模式打开笔记时的编辑工具栏异常问题
  • 修复了没有修改笔记内容时使用 ctrl+S 快捷键会触发上传的问题
  • 优化了增量同步的一些问题
  • 优化了历史版本对比时图片的重复问题

2.5.0

  • 支持全新增量同步方式;详见:http://cdn.wiz.cn/new-sync-mode.html
  • 无网络状态下搜索,可匹配标题;
  • 修复阅读笔记时可粘贴图片的问题;
  • 修复在不保存笔记前提下进行加密导致的内容异常问题;
  • 修复系统消息无法打开的问题;
  • 修复无网络时打开绝密群组笔记始终提示下载证书的问题;
  • 修复插入超链接无法取消的问题;

2.4.4

  • 全新搜索服务,支持全文检索,笔记列表和正文关键字高亮,能够使用 AND、OR 进行高级查询,详见:http://www.wiz.cn/advanced_search.html
  • 导入文件支持扩展名为 .md 的文件
  • 保存附件时,默认位置为上一次保存的目录
  • 修复了搜索时下拉框中的搜索历史遮挡输入法的问题
  • 修复了编辑时拖动图片到编辑区导致内容空白的问题
  • 修复了切换群组笔记时,笔记评论内容不更新的问题
  • 修复了频繁写入临时文件的问题
  • 修复了群组笔记标题输入 @ 后不弹出成员列表的问题
  • 修复了使用待办清单功能时,勾选项对勾消失的问题
  • 修复了更换自定义字体后不生效,显示为宋体的问题
  • 修复了移动多篇笔记到其他目录时可能引起的崩溃问题
  • 修复了 Markdown 笔记注释语法内的文本渲染后不换行的问题

2.4.3

  • 修复插入代码时, 插入a=’a’ 变成了 a=\’a\’的问题。
  • 修复了在标准菜单中选择视图和排序方式时,没有记住上次选择的问题。
  • 修复了在系统设置中使用暗色菜单栏时,在顶部菜单栏看不到为知笔记的图标的问题。
  • 修复了无法记住上次选择的字体颜色和背景色问题。
  • 修复了粘贴部分网页上的代码变成单行的问题。
  • 修复了Markdown 笔记部分情况会变为普通笔记的问题。

近期更新

DMG版本安装方法:

双击下载的DMG包,拖拽wiznote图标到application文件夹
支持Mac OSX 10.7.3及以上版本

项目开源:

为知笔记 Mac 版是一个开源项目,您可以下载源码后编译得到最新版本,也可以自己扩展新功能

源码地址: https://github.com/WizTeam/WizQTClient

编译方法:https://url.wiz.cn/u/linux

许可协议:http://www.wiz.cn/opensourceagreement.html

欢迎参与项目开发,您的参与将使为知笔记更加完善

 

帮助:

帮助手册: MacOS/Linux帮助手册

Email:help@wiz.cn

为知笔记 Mac 版 2.5.7

最新版 2.5.7

下载地址: http://url.wiz.cn/u/mac

更新日志

【新增】全新同步方式

如何体验更快的同步速度?

点击菜单 – 偏好设置 – 同步 – 勾选「启用新的同步方式」
注意:一旦开启新的同步方式后
  • 不能再退回到旧的同步方式。
  • 其他平台的客户端必须更新到最新版,否则其他平台无法正常使用
以下为各端最新版本:
  • 为知笔记 Windows 4.8.5  下载
  • 为知笔记 Android 7.6.5  下载
  • 为知笔记 iOS 7.6.5   下载
  • 为知笔记 Mac 2.5.7 下载

2.5.7

下载地址:http://url.wiz.cn/u/mac

  • 修复点击搜索结果笔记程序无响应的问题
  • 修复部分代码区域显示异常问题
  • 进行了一些优化

2.5.6

  • 新增 格式刷功能
  • 新增 笔记置顶功能
  • 新增 Markdown Checkbox 语法支持
  • 优化群组笔记同步速度
  • 优化插入代码功能

2.5.5

(旧版盒子用户请下载该版本)
  • 修复一些同步异常问题

2.5.3

  • 修复笔记搜索结果正文关键字不高亮的问题
  • 修复设置默认用编辑模式打开笔记时的编辑工具栏异常问题
  • 修复了没有修改笔记内容时使用 ctrl+S 快捷键会触发上传的问题
  • 优化了增量同步的一些问题
  • 优化了历史版本对比时图片的重复问题

2.4.4

  • 全新搜索服务,支持全文检索,笔记列表和正文关键字高亮,能够使用 AND、OR 进行高级查询,详见:http://www.wiz.cn/advanced_search.html
  • 导入文件支持扩展名为 .md 的文件
  • 保存附件时,默认位置为上一次保存的目录
  • 修复了搜索时下拉框中的搜索历史遮挡输入法的问题
  • 修复了编辑时拖动图片到编辑区导致内容空白的问题
  • 修复了切换群组笔记时,笔记评论内容不更新的问题
  • 修复了频繁写入临时文件的问题
  • 修复了群组笔记标题输入 @ 后不弹出成员列表的问题
  • 修复了使用待办清单功能时,勾选项对勾消失的问题
  • 修复了更换自定义字体后不生效,显示为宋体的问题
  • 修复了移动多篇笔记到其他目录时可能引起的崩溃问题
  • 修复了 Markdown 笔记注释语法内的文本渲染后不换行的问题

近期更新:

1.

提示“密码错误”怎么办

你好,如果您近期发现用密码在网页版和其他端可以登录,却在某个端提示“密码错误”,请不要慌张。这是由于您在其他端上开启了新同步方式(每个端都必须使用最新版客户端)后,某些设备上还是旧版本,因无法继续使用给出的提示。请从官网下载最新版安装即可解决。各版本新版下载链接见:http://www.wiz.cn/download.html
给您造成的不便,非常抱歉。

微信活动福利名单 | 召唤获赠的小伙伴~

前天,我们向大家推荐了让 12 万人受益的战拖方法论:《战胜拖延症:跟高地清风学自我管理》音频课程,并发放了小福利。先公布获奖名单:

以上小伙伴,请在 5 月 23 日(下周二)前,与客服小知(微信号:wizxiaozhi)联系领取福利哟

从留言里能感受到,大家的确深受拖延症之害:

被拖延症爱上了的:

因为拖延耽误生娃这等大事的:

深刻反省后还是拖延了的:

一本书在身边带了 3 年一直拖延没读的:

还有分享战拖心得的小伙伴:

这位同学,你还是点击阅读原文吧,我只能帮你到这里了:

祝大家科学战拖成功!

没来得及参与的小伙伴,点击 这里,99 元购买 《战胜拖延症:跟高地清风学自我管理》

看完这 2 张图,你就知道为啥要开启为知笔记的全新同步方式了!

有人问:新同步方式到底好不好?

也有人问:新旧同步方式有什么区别?

 

那:

给两张图 + 几段文字

为你答疑解惑

 

我回答新同步「好,快,稳」

你不信!

你说我是官方说辞

那来看看

用了的小伙伴

怎么说

新同步_用户说1

我告诉你

新同步方式是增量同步,速度嗖嗖快

你不解的眼神告诉我「没听懂」

那来看看

我举的例子,拿出的数据

如:原笔记 10 M,编辑后达到 20 M

旧同步方式:需要上传/下载 20 M 的大小

新同步方式:只需上传/下载新增加的 10M 的大小

所需时间:同样网络情况下,新同步方式只需要旧同步方式的 10%—50% 的时间。

 

新同步_我们说2

小伙伴的反馈也看了

增量同步你也明白啦

接下来你需要做什么呢?

打开手机或电脑端的为知笔记

找到设置/选项 – 同步 – 手动开启「新的同步方式」

体验别人都说的「超快同步速度」

新同步-个端同步位置

最后,叨叨两句

如果你已经开启了新的同步方式

但发现有的设备上的为知笔记不能登录了

还提示密码错误

别急

到为知笔记的官网下载对应版本

覆盖安装即可。

产品更新 | 想要嗖嗖快的同步速度?方法在此

“只求嗖嗖的同步速度”

“想要精准的在线搜索”

“笔记太长,翻找想要的内容有点儿费事儿啊”

“手机上啥时候能取消已分享的笔记?查看历史版本呢?”

“主题啊,主题,我在呼唤你”

……

这些都是正在看文章的你提出的建议或疑问,我们都深深的记在了心里,默默的逐步完善。

因为我们知道,只有你们用的舒服痛快,我们才会真正的开心!

今天,全新的同步方式在所有的客户端上线了!

是的,你没有看错,手机,平板,电脑,网页同时上线新版本!

关于新的同步,更新前你一定要知道:

  • 新的同步方式采用增量同步,速度较之前的同步方式会快很多
  • 新的同步方式需要手动开启,操作步骤:「设置/选项 – 同步设置 – 开启新的同步方式 」
  • 所有客户端须更新到最新版本,一端开启了新的同步方式,其他客户端需要更新到最新版本,否则无法登录「比如:手机端开启了新的同步方式,电脑端只需要更新到最新版本,不需要重新开启」

为知笔记 windows 4.7.4 版本已上线

  • 支持全新的同步方式

    需要手动开启:点击右上角菜单 – 选项 – 同步 – 勾选「启用新的同步方式」

  • 修改笔记创建时间和编辑时间,可同步到服务器(小伙伴们可以补记日记啦)
  • 查看其他更新
  • 点击下载

为知笔记 Android 7.6.1 版本已更新

  • 全面改进同步速度,体验增量同步带来的快感

    需要手动开启新的同步方式: 设置-同步设置-勾选「开启新的同步方式」

  • 新增查看和恢复笔记的历史版本(VIP)

    阅读笔记时,点击右上角的更多,选择历史版本

  • 新增我的分享列表,可以取消分享(VIP)

    点击左侧边栏的头像,然后找到「我的分享」,查看或取消分享

  • 点击下载

为知笔记 iOS 7.6.1 版本已发布

  • 全面改进同步速度,体验增量同步带来的快感

    手动开启新的同步方式:设置 – 同步 – 勾选「开启新的同步方式」

  • 支持笔记内搜索啦

    阅读笔记 – 右下角更多 – 笔记内搜索

  • iPhone 端下载
  • iPad 端下载

为知笔记 Mac/Linux 2.5.3 版本已上线

  • 支持全新增量同步方式

    点击菜单 – 偏好设置 – 同步 – 勾选「启用新的同步方式」

  • 无网络状态下搜索,可匹配标题
  • Mac版下载
  • 注:Linux 需要自己编译,点击查看详细编译过程

为知笔记 Mac 端 Safari 剪辑器插件

拿出手机,打开电脑,更新最新版本吧!期待你的积极反馈!

近期版本预告

  • Windows 端、手机端会提供至少三种不同的颜色主题
  • 全端会提供康奈尔笔记模板
  • 手机端会支持语音速记「不仅可以语音转文字,还会保存音频」
  • 全面优化手机端编辑,会提供缩进、字体颜色、字体背景色、字号大小设置
  • 更多敬请期待