跳到:
内容

BuddyPress.org网站

开的9年前

关闭9年前

上次修改时间9年前

#6487 关闭 缺陷(bug) (固定的)

Mentions.js在wp-admin post编辑器上失败

报告人: dcavins简介 dcavins公司 所有者: djpaul的个人资料 戴保罗
里程碑: 2.3.3 优先: 正常的
严重程度: 正常的 版本: 2.3.1
组件: 活动 关键词: 开发人员反馈
复写的副本:

说明

在wp-admin中使用帖子编辑器时,会出现以下错误:
TypeError:null不是一个对象(在references.js:250上计算“window.tinyMCE.activeEditor.contentDocument”)

控制台告诉我窗口.tinyMCE.activeEditor为null。

参考.js,我正在读取以下代码:

loadMentionsInTinyMCE=函数(){if(loadAttempts<4||!$('body').hasClass('wp-admin')){loadAttempts++;if(typeof window.tinyMCE===“undefined”||window.tingyMCE.activeEditor===null ||typeof windows.tinyMCE.activeEditor==“undefined”){setTimeout(loadMentionsInTinyMCE,500);回报;}}$(window.tinyMCE.activeEditor.contentDocument.activeElement).atwo(“setIframe”,$(“#content_ifr”)[0]).bp_mentions(用户);};

如果我理解正确,这将延迟.atwo.bp_references(.atwo_bp_提及)每次最多触发五次,每次持续半秒,但第六次,它还是会启动。

我添加了一个补丁,它只在设置了对象属性的情况下运行,并在五次迭代后放弃,但我不熟悉此功能,所以我怀疑自己是否真的理解这里发生的事情。

附件(5)

注释.js(8.2 KB)-由添加dcavins公司 9年前.
将loadMentionsInTinyMCE移动到全局范围。
6487.02补丁(3.4 KB)-由添加dcavins公司 9年前.
通过tiny_mce_before_init过滤器添加TinyMCE初始化回调。
6487.03补丁(5.9 KB)-由添加伊玛斯 9年前.
6487.04.批次(3.4 KB)-由添加dcavins公司 9年前.
最小变化;使用TinyMCE中的init回调选项。
6487.05.批次(3.5 KB)-由添加dcavins公司 9年前.

将所有附件下载为:.zip文件

更改历史记录(23)

#1 @DJ保罗
9年以前

  • 里程碑已从更改等待审查2.3.3

已确认;它似乎并没有明显地破坏功能,但它一定有一些乍看起来并不明显的影响。

我想建议在2.3版本中解决这个问题,因为这在过去确实有效,所以我想我们的JS(或WP)中有些东西发生了变化。我不太担心,如果人们认为其他的功能似乎工作。

#2 @dcavins公司
9年以前

在我建议的修复中,我看到了以下行为。如果在预选了“可视”编辑器的情况下加载后期编辑页面,则bp_项目连接到wp_编辑器iframe如预期。如果切换到文本编辑器,bp_项目也附在那里。如果页面加载时文本窗格可见,bp_项目按预期附加到文本编辑器,但负载提及InTinyMCE用完它的尝试并放弃尝试附加iframe,当您切换到可视化编辑器时,bp_项目不起作用。

也许更好的选择是连接到wp_编辑器加载时的iframe(来自@boone:http://telegogistic.net/2012/02/09/using-init-callback-with-tinymce-and-wp_editor-in-wordpress/).

通过添加此操作:

函数bp_add_mentions_on_tiny_mce_init($initArray){$initArray['setup']='函数(ed){编辑onInit.add(函数(d){加载TinyMCE()中的内容;});}';return$initArray;}添加过滤器('tiny_mce_before_init','bp_add_mentions_on_tiny_mce_init');

到函数文件,并使用附加的修改过的注释.js加载TinyMCE()中的内容加载编辑器时激发。这可能值得调查?

@dcavins公司
9年以前

将loadMentionsInTinyMCE移动到全局范围。

#3 @DJ保罗
9年以前

我只是想我们可以解决最初的问题,并担心将来某个时候会支持在选项卡之间切换,但如果你现在想正确地解决这个问题,那你得负很大的责任。

你的补丁实际上是整个文件:D,但我从你的例子中得到了这个想法。如果这样做是唯一的方法,我可以接受将其放入全局范围,但让我们这样命名它:

window.bp=窗口.wp |{};window.bp.intations=window.bb.intations|{};

bp.活动.提及,我们还没有讨论过如何在JS中存储这类东西。

这张票是在松弛在hnla的#buddypress中。查看日志.


9年以前

这张票是在松弛在djpaul的#buddypress中。查看日志.


9年以前

@dcavins公司
9年以前

通过tiny_mce_before_init过滤器添加TinyMCE初始化回调。

#6 @dcavins公司
9年以前

我添加了一个使用TinyMCE 4样式init回调的刷新补丁。(所以它只适用于WP 3.9+。可以吗?)

欢迎提供任何反馈。请使用各种设置进行测试。

这张票是在松弛在dcavins的#buddypress中。查看日志.


9年以前

#8 @伊玛斯
9年以前

@dcavins我看了你的补丁,修复效果很好,做得很好:)

我对如何组织这一切有一些建议:

  • 我认为只有当编辑器有可用的tinymce时,我们才应该加载“tinymce”部分,因此使用该操作wp队列编辑器可以帮助我们获得这些信息。
  • 因此,我建议将修复程序放在特定文件中>注释.tinymce.js
  • 它可能与此票据没有直接关系,但我需要将“bp-mentions”脚本注册到wp脚本中,所以我添加了一些函数来使用非常有用的core-cssjs函数。

6487.03补丁中提供了所有这些建议

@伊玛斯
9年以前

#9 @DJ保罗
9年以前

现在我们支持的最小WP版本是3.8,我认为使用3.9+中的东西修复这个问题是可以的。我们对3.8用户的修复可以是让他们更新WordPress(文字出版社).

#10 @DJ保罗
9年以前

  • 关键词 需要-刷新补充;has-patch接口远离的

@imath将排队的bp-mentions脚本移动到bp_请求_注册_通用_脚本这是有道理的,但不一定要解决这个问题。让我们分开来做(应该很快,因为你已经写好了)。

添加新的JS文件还不能让我信服。特别是对于2.3.x版本。一般来说,我想推迟这样做,直到我们有了模块化的JS,我们可以在多个文件中使用它,并用Grunt任务构建成单个文件。

我们确实需要加载尝试次数不管怎么说,它都能处理窗口.tinyMCE tinyMCE.activeEditor尚未加载(慢速互联网、慢速浏览器、eyc)。

#11个 @dcavins公司
9年以前

我同意,在短期内,我们应该将这一切作为一个js文件排队,等待未来BP中的某种智能加载程序。

我们不需要加载尝试次数考虑到这里的大开关是让tinyMCE在完成其新设置回调时执行我们的新设置回调初始化运行。

我将刷新上面的@imath补丁,使其变得稍微小一些——所以我们只是在修复这个问题null对象这里有问题。

@dcavins公司
9年以前

最小变化;使用TinyMCE中的init回调选项。

#12 @dcavins公司
9年以前

  • 关键词 开发人员反馈补充;需要-刷新远离的

#13 随访: @伊玛斯
9年以前

@DJPaul我同意我的补丁对于2.3.x里程碑来说有点太多了。

@dcavins我还没有测试补丁,但我想我应该把全局bp/window.bp=window.bp|{}文件顶部的东西。那么我认为我们不需要在函数中使用window.bp,直接使用bp应该可以;)

这张票是在松弛在djpaul的#buddypress中。查看日志.


9年以前

#15 答复: 13 @dcavins公司
9年以前

回复伊玛斯:

@dcavins我还没有测试补丁,但我想我会把全局bp/window.bp=window.bp|{}文件顶部的东西。那么我认为我们不需要在函数中使用window.bp,直接使用bp应该可以;)

哈哈,我真的不知道你的意思,但我还是想做点什么,因为DJPaul说这张票进展缓慢,哈哈。

因此,这个新版本似乎可以在所有环境中工作,并且不会抛出错误。让我知道我们需要做什么才能使这成为一项检查过的任务。

#16 @戴保罗
9年以前

  • 所有者设置为戴保罗
  • 分辨率设置为固定的
  • 状态已从更改新的关闭

10053:

活动:修复wp-admin帖子编辑器中的@提及。

如果屏幕加载时文本编辑器可见,血压(_M)按预期附加到文本编辑器,但在TinyMCE中加载注意事项使用了它的尝试并放弃了附加iframe的尝试,因此当您切换到可视化编辑器时,bp_项目不起作用。

此更改将删除循环在TinyMCE中加载注意事项方法,而不是挂钩到TinyMCE配置中以指定init回调,然后在其中加载bp_项目.

修复#6487(分支)。道具dcavins,imath,DJPaul。

#17 @戴保罗
9年以前

10054:

活动:修复wp-admin帖子编辑器中的@提及。

如果屏幕加载时文本编辑器可见,bp_项目按预期附加到文本编辑器,但在TinyMCE中加载注意事项用完了它的尝试,并放弃了附加iframe的尝试,所以当您切换到可视化编辑器时,“不起作用”。

此更改将删除循环在TinyMCE中加载注意事项方法,而不是挂钩到TinyMCE配置中以指定init回调,然后在其中加载bp_项目.

修复#6487(行李箱)。道具dcavins,imath,DJPaul。

#18个 @dcavins公司
9年以前

谢谢你这么做,@DJPaul!

注:请参见TracTickets公司有关使用的帮助门票。