这样
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/grapes.0.21.1.css"> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/grapes.0.21.1.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/grapesjs-preset-webpage.1.0.2.js"></script> <style> body, html { height: 100%; margin: 0; } #gjs { border: 3px solid #444; } </style> </head> <body> <div id="gjs" style="height:100%;"></div> <script> document.addEventListener('DOMContentLoaded', function () { const editor = grapesjs.init({ container: '#gjs', fromElement: true, height: '100%', width: 'auto', plugins: ['gjs-preset-webpage'], pluginsOpts: { 'gjs-preset-webpage': {} } }); // Initial content editor.setComponents(` <div> <p id="selectable-link">Click here to select a link</p> </div> `); const links = [ { label: 'Google', value: 'https://www.google.com' }, { label: 'Facebook', value: 'https://www.facebook.com' }, { label: 'Twitter', value: 'https://www.twitter.com' } ]; // Extend the Component Manager to add a custom trait for href editor.Components.addType('link', { model: { defaults: { traits: [ // Replace href trait with a dropdown { type: 'select', label: 'Href', name: 'href', options: links.map(link => ({ value: link.value, name: link.label })) } ] } } }); // Apply the custom link component type to <a> elements editor.DomComponents.addType('link', { isComponent: el => el.tagName === 'A', model: { defaults: { tagName: 'a', draggable: true, droppable: true, traits: [ { type: 'select', label: 'Href', name: 'href', options: links.map(link => ({ value: link.value, name: link.label })) } ] } } }); // Convert the initial text element to a link component when selected editor.on('component:selected', (component) => { if (component.getAttributes().id === 'selectable-link') { component.set({ tagName: 'a', draggable: true, droppable: true }); component.addTraits([ { type: 'select', label: 'Href', name: 'href', options: links.map(link => ({ value: link.value, name: link.label })) } ]); } }); }); </script> </body> </html>
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?