我有一个选择onchange触发一个js功能来显示/隐藏tinymce编辑器:
<select id="mySelect" onChange="myFuntion()">
<option value="1">Yes</option>
<option value="0">No</option>
然后我有一个带有tinymce的textarea(在页面加载时加载)。
<textarea class="mce" id="myTextarea"></textarea>
<script src="tinymce.js></script> // file with global tinymce.init({ ... });
js功能如下:
<script>
function myFuntion(){
if( $( '#mySelect' ).val() == '1' ) { tinymce.get( 'myTextarea' ).show(); }
else { tinymce.get( 'myTextarea' ).hide(); }
}
$( document ).ready(function() { myFuntion(); }); // show/hide tinymce based on how the mySelect setting is on page load
除了“ $(document).ready(function(){myFuntion();}); ”抛出错误“ Uncaught TypeError:无法读取属性'show'of null “,我认为是因为tinymce尚未加载。
有一种方法可以更改“文档就绪功能”,“加载tinymce时>执行myFunction()”
PS:我使用tinymce 4,tinymce.init()在外部文件上并在其他页面上使用,所以我不想编辑这个文件
修改 我的实际解决方法是使用: setTimeout(function(){myFunction();},1500); 但如果有回调或类似,例如$(document).on('tinymce:init')会很棒
答案 0 :(得分:3)
在tinymce 4中尝试使用Promise
tinymce.init({
//some settings
}).then(function(editors) {
//what to do after editors init
});
答案 1 :(得分:2)
要添加Kim Gysen写的答案......您可以随时使用JavaScript来逐页修改/扩展标准init。
例如,从标准配置开始:
baseConfig = {
selector: 'textarea'
....
}
...因为这只是一个简单的JavaScript对象,所以在使用它来初始化TinyMCE之前,可以将其他属性/方法注入该对象。
例如:
customConfig = {
setup: function (editor) {
editor.on('init', function () {
//Do what you need to do once TinyMCE is initialized
});
}
}
然后您可以将customConfig
“注入”baseConfig
。最简单的方法是使用jQuery的extend方法:
$.extend(baseConfig, customConfig);
...这将采用customConfig
中的所有方法和属性,并将其添加到baseConfig
。完成后,您可以使用新更新的baseConfig
:
tinymce.init(baseConfig);
这种通用技术允许您创建“标准”配置,其中包含所需的所有基本功能,同时逐页注入其他配置选项。
现在,您可以在需要时触发TinyMCE中的“onInit”功能,而无需修改其他地方使用的核心配置。
答案 2 :(得分:0)
根据文档,您必须按如下方式声明回调:
static async Task OnQueryReceived(object sender, QueryReceivedEventArgs e)
{
DnsMessage query = e.Query as DnsMessage;
if (query == null) return;
DnsMessage response = query.CreateResponseInstance();
if (response.Questions.Any())
{
DnsQuestion question = response.Questions[0];
DnsMessage upstreamResponse = await DnsClient.Default.ResolveAsync(question.Name, question.RecordType, question.RecordClass);
response.AdditionalRecords.AddRange(upstreamResponse.AdditionalRecords);
response.ReturnCode = ReturnCode.NoError;
if (!question.Name.ToString().Contains("yourdomain.com"))
{
response.AnswerRecords.AddRange(upstreamResponse.AnswerRecords);
}
else
{
response.AnswerRecords.AddRange(
upstreamResponse.AnswerRecords
.Where(w => !(w is ARecord))
.Concat(
upstreamResponse.AnswerRecords
.OfType<ARecord>()
.Select(a => new ARecord(a.Name, a.TimeToLive, IPAddress.Parse("192.168.0.199"))) // some local ip address
)
);
}
e.Response = response;
}
}
这是他们提供的手柄,以确保tinyMCE准备就绪 你在这说什么:
我使用tinymce 4,tinymce.init()在外部文件上使用 其他页面,所以我不想编辑这个文件
对我来说没有多大意义。
根据文件:
oninit:此选项使您可以指定要执行的功能 当所有编辑器实例完成初始化时。这是 很像HTML页面的onload事件。
清楚地表明这是你应该去的方式
声明function myCustomOnInit() {
alert("We are ready to rumble!!");
}
tinyMCE.init({
...
oninit : myCustomOnInit
});
的位置无关紧要,只需确保添加要执行的功能即可。