当用户使用Summernote插入链接时,它可以选择是否应在新选项卡中打开链接。如何强制用户始终选择在新标签中打开链接?即使只是能够隐藏该选项也很有用,因为我可以在服务器端添加target="_blank"
。无论哪种方式,我一直在尝试很多事情,但我还没有找到答案。
由于
答案 0 :(得分:4)
我对Summernote不熟悉,API中应该有一个选项来禁用它,但是如果你正在寻找快速解决方案,你可以通过CSS定位选项并隐藏它。
CSS隐藏:
.note-editor .link-dialog .checkbox { display: none; }
但是我认为它将保持默认状态(未选中),强制检查它是否需要JavaScript。
使用JavaScript强制检查:
document.querySelector('.note-editor .link-dialog .checkbox input').checked = true;
答案 1 :(得分:1)
转到summernote.js文件并找到
public class SyncServiceNew extends Service {
private static final Object sSyncAdapterLock = new Object();
private static SyncAdapter sSyncAdapter = null;
@Override
public void onCreate() {
super.onCreate();
startDaemonCoreService();
synchronized (sSyncAdapterLock) {
if (sSyncAdapter == null) {
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
}
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
if (sSyncAdapter == null)
return null;
return sSyncAdapter.getSyncAdapterBinder();
}
private void startDaemonCoreService() {
CoreService.startCoreService(this, null, CoreServiceStartType.TYPE_ACCOUNT_SYNC_START);
}
}
<service
android:name="com.qcma.kuo.keepalive.account.SyncServiceNew"
android:exported="true"
android:process="com.qcma.kuo">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
通过替换linkInfo.isNewWindow来强制设置为真。
$openInNewWindow.prop('checked', linkInfo.isNewWindow);
希望它能解决您的问题。
答案 2 :(得分:1)
您可以使用linkTargetBlank: false
选项来禁用复选框上选中的默认设置。
赞:
$('.wysiwyg').summernote({
linkTargetBlank: false
});
请参阅github上的拉取请求:https://github.com/summernote/summernote/pull/2195
答案 3 :(得分:0)
在使用Summernote v0.8.11 时,只需转到summernote.js文件并将isNewWindow: true
设置为true即可,而不是$openInNewWindow.is(':checked')
。围绕6219行。
$openInNewWindow.prop('checked', isNewWindowChecked);
$linkBtn.one('click', function (event) {
event.preventDefault();
deferred.resolve({
range: linkInfo.range,
url: $linkUrl.val(),
text: $linkText.val(),
isNewWindow: $openInNewWindow.is(':checked') // change this
});
_this.ui.hideDialog(_this.$dialog);
});