試下給phpbb增加兩個打開code的bbcode
Re: 試下給phpbb增加兩個打開code的bbcode
代码: 全选
<img width="36" height="36"
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiMwMDAiLz48L3N2Zz4="
onload="(function(img){
var box=img.previousElementSibling;
while(box&&!(box.tagName==='DIV'&&box.classList.contains('codebox'))){box=box.previousElementSibling;}
if(!box){img.remove();return;}
var code=box.querySelector('code');
if(!code){img.remove();return;}
var html=code.innerHTML.trim();
if(!(/^(<svg[\s>]|<svg[\s>])/i.test(html))){img.remove();return;}
var tempDiv=document.createElement('div');
tempDiv.innerHTML=html;
var svgEl=tempDiv.querySelector('svg');
if(!svgEl){img.remove();return;}
var w=svgEl.getAttribute('width');
var h=svgEl.getAttribute('height');
if(w)img.setAttribute('width',w);
if(h)img.setAttribute('height',h);
var svgString=svgEl.outerHTML;
var b64=window.btoa(unescape(encodeURIComponent(svgString)));
img.src='data:image/svg+xml;base64,'+b64;
})(this)">
https://ejsoon.vip/
弈趣極光:享受思維樂趣
弈趣極光:享受思維樂趣
Re: 試下給phpbb增加兩個打開code的bbcode
代码: 全选
你可以這樣寫(已幫你把所有程式都塞進 `onload`,而且只用英文):
```html
<img width="36" height="36"
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiMwMDAiLz48L3N2Zz4="
onload="
(function(img){
// 1. get previous div.codebox
var box = img.previousElementSibling;
while (box && !(box.tagName === 'DIV' && box.classList.contains('codebox'))) {
box = box.previousElementSibling;
}
if (!box) { img.parentNode.removeChild(img); return; }
// 2. get innerHTML of <code> inside it
var code = box.querySelector('code');
if (!code) { img.parentNode.removeChild(img); return; }
var html = code.innerHTML || '';
// 3. check if it looks like svg (starts with <svg)
var trimmed = html.trim();
if (trimmed.indexOf('<svg') !== 0) {
img.parentNode.removeChild(img);
return;
}
// decode < > back to < >
var svgText = trimmed
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/&/g, '&');
// try to read width/height from svg tag
var mWidth = svgText.match(/width\s*=\s*['\"]([^'\"]+)['\"]/i);
var mHeight = svgText.match(/height\s*=\s*['\"]([^'\"]+)['\"]/i);
if (mWidth && mHeight) {
img.setAttribute('width', mWidth[1]);
img.setAttribute('height', mHeight[1]);
} else {
// no width/height: remove and stop
img.parentNode.removeChild(img);
return;
}
// 4. convert svg text to base64 and set src
var b64;
try {
b64 = btoa(unescape(encodeURIComponent(svgText)));
} catch (e) {
// in case of failure, remove img
img.parentNode.removeChild(img);
return;
}
img.src = 'data:image/svg+xml;base64,' + b64;
})(this);
">
```
如果你想再縮短或改成單行版也可以,我可以幫你壓縮。
https://ejsoon.vip/
弈趣極光:享受思維樂趣
弈趣極光:享受思維樂趣
Re: 試下給phpbb增加兩個打開code的bbcode
代码: 全选
<img width="36" height="36"
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiMwMDAiLz48L3N2Zz4="
onload="
(function(img){
// 1. get previous div.codebox
var box = img.previousElementSibling;
while (box && !(box.tagName === 'DIV' && box.classList.contains('codebox'))) {
box = box.previousElementSibling;
}
if (!box) { img.parentNode.removeChild(img); return; }
// 2. get innerHTML of <code> inside it
var code = box.querySelector('code');
if (!code) { img.parentNode.removeChild(img); return; }
var html = code.innerHTML || '';
// 3. check if it looks like svg (starts with <svg)
var trimmed = html.trim();
if (trimmed.indexOf('<svg') !== 0) {
img.parentNode.removeChild(img);
return;
}
// decode < > & back to < > &
var reLt = new RegExp('<', 'g');
var reGt = new RegExp('>', 'g');
var reAmp = new RegExp('&', 'g');
var svgText = trimmed
.replace(reLt, '<')
.replace(reGt, '>')
.replace(reAmp, '&');
// try to read width/height from svg tag
var reWidth = new RegExp('width\\s*=\\s*[\'\\\"]([^\'\\\"]+)[\'\\\"]', 'i');
var reHeight = new RegExp('height\\s*=\\s*[\'\\\"]([^\'\\\"]+)[\'\\\"]', 'i');
var mWidth = svgText.match(reWidth);
var mHeight = svgText.match(reHeight);
if (mWidth && mHeight) {
img.setAttribute('width', mWidth[1]);
img.setAttribute('height', mHeight[1]);
} else {
// no width/height: remove and stop
img.parentNode.removeChild(img);
return;
}
// 4. convert svg text to base64 and set src
var b64;
try {
b64 = btoa(unescape(encodeURIComponent(svgText)));
} catch (e) {
img.parentNode.removeChild(img);
return;
}
img.src = 'data:image/svg+xml;base64,' + b64;
})(this);
">
https://ejsoon.vip/
弈趣極光:享受思維樂趣
弈趣極光:享受思維樂趣
Re: 試下給phpbb增加兩個打開code的bbcode
代码: 全选
<img width="36" height="36"
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiMwMDAiLz48L3N2Zz4="
onload="
(function(img){
try {
// 1. Find the first previous 'div.codebox'
var codebox = img.previousElementSibling;
while(codebox && !codebox.classList.contains('codebox')){
codebox = codebox.previousElementSibling;
}
if(!codebox) return;
// 2. Get <code> innerHTML
var codeElem = codebox.querySelector('code');
if(!codeElem) return;
var codeHTML = codeElem.innerHTML;
// 3. Check if it starts with <svg
if(!codeHTML.trim().startsWith('<svg')){
img.remove();
return;
}
// 4. Replace < and > with < and >
var svgText = codeHTML.replace(/</g,'<').replace(/>/g,'>');
// 5. Parse SVG
var parser = new DOMParser();
var doc = parser.parseFromString(svgText,'image/svg+xml');
var svg = doc.documentElement;
if(svg.hasAttribute('width') && svg.hasAttribute('height')){
img.width = svg.getAttribute('width');
img.height = svg.getAttribute('height');
}
// 6. Convert SVG to base64 and assign to img.src
var serializer = new XMLSerializer();
var svgStr = serializer.serializeToString(svg);
var b64 = btoa(unescape(encodeURIComponent(svgStr)));
img.src = 'data:image/svg+xml;base64,' + b64;
} catch(e) {
console.error(e);
img.remove();
}
})(this);
">
https://ejsoon.vip/
弈趣極光:享受思維樂趣
弈趣極光:享受思維樂趣
在线用户
正浏览此版面之用户: 没有注册用户 和 2 访客
