MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

微件:SaltInPageCSSLoader:修订间差异

来自MCBBS Wiki
跳到导航 跳到搜索
(.)
(// Edit via Wikiplus)
 
(未显示1个用户的8个中间版本)
第1行: 第1行:
<noinclude>
<noinclude>
已弃用,请使用 <code><nowiki>{{#inline-css}}</nowiki></code> 解析器函数代替。
<pre><div name="test" class="salt InPageCSSLoader">&lt;nowiki>
<pre><div id="test" class="salt InPageCSSLoader">&lt;pre>
h1{
h1{
color: royalblue;
color: royalblue;
background-color: #f0f6ff;
background-color: #f0f6ff;
}
}
&lt;/nowiki></div>
&lt;/pre></div>
{{#Widget:SaltInPageCSSLoader}}</pre>
{{#Widget:SaltInPageCSSLoader}}</pre>
<div name="test" class="salt InPageCSSLoader"><nowiki>
<div id="test" class="salt InPageCSSLoader"><pre>
h1{
h1{
color: royalblue;
color: royalblue;
background-color: #f0f6ff;
background-color: #f0f6ff;
}
}
</nowiki></div>
</pre></div>
{{#Widget:SaltInPageCSSLoader}}
{{#Widget:SaltInPageCSSLoader}}
这个页面的标题(&lt;h1&gt;)变成了蓝字蓝底。
这个页面的标题(&lt;h1&gt;)变成了蓝字蓝底。
</noinclude><includeonly><script async>
</noinclude><includeonly><script defer>
/**
/**
* 搬运须知: 您必须在**显眼处**标识来源“MCBBS Wiki”与作者“Salt_lovely”, **不**接受任何形式的简称或不署名。
* 搬运须知: 您必须在**显眼处**标识来源“MCBBS Wiki”与作者“Salt_lovely”, **不**接受任何形式的简称或不署名。
第23行: 第24行:
*/
*/
(function () {
(function () {
function main() {
let ps = pageState() // 获取页面状态
let ps = pageState() // 获取页面状态
let elems = HTMLElemsFliter(Array.from(document.querySelectorAll('.salt.InPageCSSLoader')))
let elems = HTMLElemsFliter(Array.from(document.querySelectorAll('.salt.InPageCSSLoader')))
if (elems.length < 1) { console.log('[SaltInPageCSSLoader]未检测到页内CSS'); return } else { console.log('[SaltInPageCSSLoader]检测到页内CSS, 共计' + elems.length + '个') }
if (elems.length < 1) { console.log('[SaltInPageCSSLoader]未检测到页内CSS'); return } else { console.log('[SaltInPageCSSLoader]检测到页内CSS, 共计' + elems.length + '个') }
for (let el of elems) {
// 去除标记
for (let el of elems) {
// 去除标记
el.classList.remove('InPageCSSLoader')
el.classList.remove('InPageCSSLoader')
// 内容简单处理
el.classList.remove('SaltCSS')
let text = (el.textContent || '').replace(/^\n+|\n+$/gm, '') // 去除首尾的空行
let toolbar = el.querySelector('.toolbar') // Prism处理
el.textContent = text
let handler = () => {
if (toolbar) { toolbar.remove() } // Prism处理
// 根据id查重(MW不支持id、class之外其他可以存放字符串的属性)
// 处理这个元素
el.style.display = 'none'
// 开始主要内容部分
// 简单的查错
if (text.length < 3 || text.indexOf('{') == -1 || text.indexOf('}') == -1) {
highlightEl(el, '检测到不可用的CSS')
console.log('[SaltInPageCSSLoader]检测到不可用的CSS:' + text)
return
}
// 写入style
let style = document.createElement('style')
style.textContent = text
// 搬运id
if (el.hasAttribute('id')) {
if (el.hasAttribute('id')) {
style.setAttribute('id', el.getAttribute('id'))
let id = el.getAttribute('id') || ''
el.removeAttribute('id')
if (document.head.querySelector( 'style#' + id )) {
console.log('[SaltInPageCSSLoader]检测到重复CSS id: ' + id)
el.removeAttribute('id')
el.style.display = 'none'
continue
}
}
}
document.head.appendChild(style)
// 内容简单处理
let text = (el.textContent || '').replace(/^\n+|\n+$/gm, '') // 去除首尾的空行
// el.textContent = text
let handler = () => {
// 处理这个元素
el.style.display = 'none'
// 开始主要内容部分
// 简单的查错
if (text.length < 3 || text.indexOf('{') == -1 || text.indexOf('}') == -1) {
highlightEl(el, '检测到不可用的CSS')
console.log('[SaltInPageCSSLoader]检测到不可用的CSS:' + text)
return
}
// 写入style
let style = document.createElement('style')
style.textContent = text
// 搬运id
if (el.hasAttribute('id')) {
style.setAttribute('id', el.getAttribute('id'))
el.removeAttribute('id')
}
document.head.appendChild(style)
}
if (ps == 0 || el.classList.contains('nopreview')) {
handler()
} else { // 页面编写者模式
el.textContent = text
highlightEl(el, '点击应用CSS(页面编写完毕后CSS将默认启用)')
el.addEventListener('click', handler)
}
el.style.whiteSpace = 'pre'
}
}
/**滤出数组中所有HTMLElement */
if (ps == 0) {
handler()
function HTMLElemsFliter(els) {
} else { // 页面编写者模式
let hel = []
for (let el of els)
highlightEl(el, '点击应用CSS(页面编写完毕后CSS将默认启用)')
el.addEventListener('click', handler)
if (el instanceof HTMLElement)
hel.push(el)
return hel
}
}
/** 0 - 默认, 浏览页面
el.style.whiteSpace = 'pre'
}
*
* 1 - 编辑/预览页面 */
/**滤出数组中所有HTMLElement */
function HTMLElemsFliter(els) {
function pageState() {
if (typeof mw != 'undefined' && typeof mw.config != 'undefined' && typeof mw.config.get == 'function') {
let hel = []
for (let el of els)
switch (mw.config.get('wgAction')) {
if (el instanceof HTMLElement)
case 'view':
hel.push(el)
return 0
return hel
case 'edit':
case 'submit':
}
return 1
/** 0 - 默认, 浏览页面
*
default:
return 0
* 1 - 编辑/预览页面 */
}
function pageState() {
if (mw && mw.config && typeof mw.config.get == 'function') {
} else {
switch (mw.config.get('wgAction')) {
return 0
case 'view':
return 0
case 'edit':
case 'submit':
return 1
default:
return 0
}
}
} else {
}
return 0
/**高亮一个元素 */
function highlightEl(el, title = '') {
el.style.display = 'block'
el.style.fontSize = '1rem'
el.style.color = 'crimson'
el.style.border = '1px solid crimson'
el.style.paddingLeft = '.5rem'
el.title = title
}
}
}
}
if (document.readyState == 'loading') {
/**高亮一个元素 */
document.addEventListener('DOMContentLoaded', main)
function highlightEl(el, title = '') {
} else {
el.style.display = 'block'
el.style.fontSize = '1rem'
main()
el.style.color = 'crimson'
el.style.border = '1px solid crimson'
el.style.paddingLeft = '.5rem'
el.title = title
}
}
})()
})()

2023年4月29日 (六) 01:31的最新版本

已弃用,请使用 {{#inline-css}} 解析器函数代替。

<div id="test" class="salt InPageCSSLoader"><pre>
h1{
    color: royalblue;
    background-color: #f0f6ff;
}
</pre></div>
{{#Widget:SaltInPageCSSLoader}}
h1{
    color: royalblue;
    background-color: #f0f6ff;
}

这个页面的标题(<h1>)变成了蓝字蓝底。