<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://lianshibaike.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>炼石百科 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="http://lianshibaike.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="http://lianshibaike.com/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Admin"/>
	<updated>2026-05-05T13:22:45Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=732</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=732"/>
		<updated>2025-12-19T08:37:35Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    vertical-align: top !important;&lt;br /&gt;
    flex-shrink: 0 !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
    text-overflow: clip !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    word-break: keep-all !important;&lt;br /&gt;
    word-wrap: normal !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li * {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保 strong 标签不会导致换行 */&lt;br /&gt;
#siteNoticeScroll li strong {&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto !important;&lt;br /&gt;
        min-height: 25px !important;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto !important;&lt;br /&gt;
        min-height: 25px !important;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto !important;&lt;br /&gt;
        min-height: 25px !important;&lt;br /&gt;
        line-height: 1.5 !important;&lt;br /&gt;
        padding: 0 !important;&lt;br /&gt;
        white-space: nowrap !important;&lt;br /&gt;
        overflow: visible !important;&lt;br /&gt;
        text-overflow: clip !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=731</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=731"/>
		<updated>2025-12-19T08:37:22Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 调试：打印所有 li 的内容&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 找到 &#039; + lis.length + &#039; 个 li 元素:&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                console.log(&#039;[SiteNotice] 第一个 li 内容: &amp;quot;&#039; + firstText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;我们目前有&amp;quot;: &#039; + (firstText.indexOf(&#039;我们目前有&#039;) !== -1));&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;次编辑&amp;quot;: &#039; + (firstText.indexOf(&#039;次编辑&#039;) !== -1));&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                    console.log(&#039;[SiteNotice] 检测到第一个 li 被分割，开始查找需要合并的部分&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                        console.log(&#039;[SiteNotice] 检查 li[&#039; + i + &#039;]: &amp;quot;&#039; + nextText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                            console.log(&#039;[SiteNotice] 合并了被分割的 li 元素，合并后内容: &amp;quot;&#039; + firstLi.text().trim() + &#039;&amp;quot;&#039;);&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 修复后共有 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] 修复后 li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 使用 attr 设置 style 属性，确保样式优先级最高&lt;br /&gt;
            var styleStr = &#039;width: &#039; + containerWidth + &#039;px !important; &#039; +&lt;br /&gt;
                          &#039;height: 25px !important; &#039; +&lt;br /&gt;
                          &#039;line-height: 25px !important; &#039; +&lt;br /&gt;
                          &#039;list-style: none !important; &#039; +&lt;br /&gt;
                          &#039;float: left !important; &#039; +&lt;br /&gt;
                          &#039;display: inline-block !important; &#039; +&lt;br /&gt;
                          &#039;box-sizing: border-box !important; &#039; +&lt;br /&gt;
                          &#039;padding: 0 !important; &#039; +&lt;br /&gt;
                          &#039;margin: 0 !important; &#039; +&lt;br /&gt;
                          &#039;vertical-align: top !important; &#039; +&lt;br /&gt;
                          &#039;flex-shrink: 0 !important; &#039; +&lt;br /&gt;
                          &#039;white-space: nowrap !important; &#039; +&lt;br /&gt;
                          &#039;overflow: visible !important; &#039; +&lt;br /&gt;
                          &#039;text-overflow: clip !important; &#039; +&lt;br /&gt;
                          &#039;text-align: center !important; &#039; +&lt;br /&gt;
                          &#039;word-break: keep-all !important; &#039; +&lt;br /&gt;
                          &#039;word-wrap: normal !important; &#039; +&lt;br /&gt;
                          &#039;max-width: &#039; + containerWidth + &#039;px !important; &#039; +&lt;br /&gt;
                          &#039;position: relative !important;&#039;;&lt;br /&gt;
            $li.attr(&#039;style&#039;, styleStr);&lt;br /&gt;
            &lt;br /&gt;
            // 确保所有子元素（包括 strong、a、font 等）都不会换行&lt;br /&gt;
            $li.find(&#039;*&#039;).each(function() {&lt;br /&gt;
                var $elem = $(this);&lt;br /&gt;
                $elem.attr(&#039;style&#039;, &lt;br /&gt;
                    &#039;white-space: nowrap !important; &#039; +&lt;br /&gt;
                    &#039;display: inline !important; &#039; +&lt;br /&gt;
                    &#039;text-align: center !important;&#039;&lt;br /&gt;
                );&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                var $li = $(this);&lt;br /&gt;
                var styleStr = &#039;width: &#039; + containerWidth + &#039;px !important; &#039; +&lt;br /&gt;
                              &#039;white-space: nowrap !important; &#039; +&lt;br /&gt;
                              &#039;overflow: visible !important; &#039; +&lt;br /&gt;
                              &#039;text-overflow: clip !important; &#039; +&lt;br /&gt;
                              &#039;text-align: center !important;&#039;;&lt;br /&gt;
                $li.attr(&#039;style&#039;, styleStr);&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=730</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=730"/>
		<updated>2025-12-19T08:34:45Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 调试：打印所有 li 的内容&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 找到 &#039; + lis.length + &#039; 个 li 元素:&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                console.log(&#039;[SiteNotice] 第一个 li 内容: &amp;quot;&#039; + firstText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;我们目前有&amp;quot;: &#039; + (firstText.indexOf(&#039;我们目前有&#039;) !== -1));&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;次编辑&amp;quot;: &#039; + (firstText.indexOf(&#039;次编辑&#039;) !== -1));&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                    console.log(&#039;[SiteNotice] 检测到第一个 li 被分割，开始查找需要合并的部分&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                        console.log(&#039;[SiteNotice] 检查 li[&#039; + i + &#039;]: &amp;quot;&#039; + nextText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                            console.log(&#039;[SiteNotice] 合并了被分割的 li 元素，合并后内容: &amp;quot;&#039; + firstLi.text().trim() + &#039;&amp;quot;&#039;);&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 修复后共有 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] 修复后 li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;position&#039;: &#039;relative&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保所有子元素（包括 strong、a、font 等）都不会换行&lt;br /&gt;
            $li.find(&#039;*&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 特别处理 strong 标签&lt;br /&gt;
            $li.find(&#039;strong&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=729</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=729"/>
		<updated>2025-12-19T08:31:19Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    vertical-align: top !important;&lt;br /&gt;
    flex-shrink: 0 !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
    text-overflow: clip !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    word-break: keep-all !important;&lt;br /&gt;
    word-wrap: normal !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li * {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保 strong 标签不会导致换行 */&lt;br /&gt;
#siteNoticeScroll li strong {&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=728</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=728"/>
		<updated>2025-12-19T08:31:07Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;position&#039;: &#039;relative&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保所有子元素（包括 strong、a、font 等）都不会换行&lt;br /&gt;
            $li.find(&#039;*&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 特别处理 strong 标签&lt;br /&gt;
            $li.find(&#039;strong&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=727</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=727"/>
		<updated>2025-12-19T08:30:44Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;position&#039;: &#039;relative&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保所有子元素（包括 strong、a、font 等）都不会换行&lt;br /&gt;
            $li.find(&#039;*&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 特别处理 strong 标签&lt;br /&gt;
            $li.find(&#039;strong&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=726</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=726"/>
		<updated>2025-12-19T08:29:53Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 调试：打印所有 li 的内容&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 找到 &#039; + lis.length + &#039; 个 li 元素:&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                console.log(&#039;[SiteNotice] 第一个 li 内容: &amp;quot;&#039; + firstText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;我们目前有&amp;quot;: &#039; + (firstText.indexOf(&#039;我们目前有&#039;) !== -1));&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;次编辑&amp;quot;: &#039; + (firstText.indexOf(&#039;次编辑&#039;) !== -1));&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                    console.log(&#039;[SiteNotice] 检测到第一个 li 被分割，开始查找需要合并的部分&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                        console.log(&#039;[SiteNotice] 检查 li[&#039; + i + &#039;]: &amp;quot;&#039; + nextText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                            console.log(&#039;[SiteNotice] 合并了被分割的 li 元素，合并后内容: &amp;quot;&#039; + firstLi.text().trim() + &#039;&amp;quot;&#039;);&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 修复后共有 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] 修复后 li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;position&#039;: &#039;relative&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保所有子元素（包括 strong、a、font 等）都不会换行&lt;br /&gt;
            $li.find(&#039;*&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 特别处理 strong 标签&lt;br /&gt;
            $li.find(&#039;strong&#039;).css({&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=725</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=725"/>
		<updated>2025-12-19T08:29:33Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    vertical-align: top !important;&lt;br /&gt;
    flex-shrink: 0 !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
    text-overflow: clip !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    word-break: keep-all !important;&lt;br /&gt;
    word-wrap: normal !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li * {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保 strong 标签不会导致换行 */&lt;br /&gt;
#siteNoticeScroll li strong {&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    display: inline !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=724</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=724"/>
		<updated>2025-12-19T08:27:37Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 调试：打印所有 li 的内容&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 找到 &#039; + lis.length + &#039; 个 li 元素:&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                console.log(&#039;[SiteNotice] 第一个 li 内容: &amp;quot;&#039; + firstText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;我们目前有&amp;quot;: &#039; + (firstText.indexOf(&#039;我们目前有&#039;) !== -1));&lt;br /&gt;
                console.log(&#039;[SiteNotice] 包含&amp;quot;次编辑&amp;quot;: &#039; + (firstText.indexOf(&#039;次编辑&#039;) !== -1));&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                    console.log(&#039;[SiteNotice] 检测到第一个 li 被分割，开始查找需要合并的部分&#039;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                        console.log(&#039;[SiteNotice] 检查 li[&#039; + i + &#039;]: &amp;quot;&#039; + nextText + &#039;&amp;quot;&#039;);&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                            console.log(&#039;[SiteNotice] 合并了被分割的 li 元素，合并后内容: &amp;quot;&#039; + firstLi.text().trim() + &#039;&amp;quot;&#039;);&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] 修复后共有 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
            for (var idx = 0; idx &amp;lt; lis.length; idx++) {&lt;br /&gt;
                var $li = lis.eq(idx);&lt;br /&gt;
                var text = $li.text().trim();&lt;br /&gt;
                console.log(&#039;[SiteNotice] 修复后 li[&#039; + idx + &#039;]: &amp;quot;&#039; + text + &#039;&amp;quot;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保内容在 li 内居中&lt;br /&gt;
            var $content = $li.find(&#039;*&#039;).first();&lt;br /&gt;
            if ($content.length === 0) {&lt;br /&gt;
                // 如果没有子元素，直接设置 li 的文本对齐&lt;br /&gt;
                $li.css(&#039;text-align&#039;, &#039;center&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 如果有子元素，确保子元素也居中&lt;br /&gt;
                $content.css({&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                    &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                    &#039;width&#039;: &#039;100%&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=723</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=723"/>
		<updated>2025-12-19T08:18:34Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 调试版本的 Mobile.js&lt;br /&gt;
// 如果正常版本不工作，可以使用这个版本查看调试信息&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    function log(message) {&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] &#039; + message);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        log(&#039;开始初始化用户提示&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        log(&#039;siteNoticeScroll 元素数量: &#039; + siteNoticeScroll.length);&lt;br /&gt;
        &lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        log(&#039;ul 元素数量: &#039; + ul.length);&lt;br /&gt;
        &lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var existingLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;现有 li 元素数量: &#039; + existingLis.length);&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
                log(&#039;当前用户: &#039; + (currentUser || &#039;未登录&#039;));&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            log(&#039;获取用户信息失败: &#039; + e.message);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        log(&#039;现有 userPrompt 元素数量: &#039; + promptElement.length);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            log(&#039;创建新的 userPrompt 元素&#039;);&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
            log(&#039;userPrompt 元素已添加到 DOM&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        var content = &#039;&#039;;&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置已登录用户内容&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置未登录用户内容&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        promptElement.html(content);&lt;br /&gt;
        log(&#039;userPrompt 内容已设置&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 验证元素是否存在&lt;br /&gt;
        var finalLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;最终 li 元素数量: &#039; + finalLis.length);&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        log(&#039;开始初始化滚动效果&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;找到 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (lis.length &amp;lt;= 1) {&lt;br /&gt;
            log(&#039;li 元素数量不足，不需要滚动&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        log(&#039;容器宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            log(&#039;容器宽度为0，延迟重试&#039;);&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 和 li 的宽度&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: (containerWidth * lis.length) + &#039;px&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
        log(&#039;设置 ul 宽度: &#039; + (containerWidth * lis.length) + &#039;, 每个 li 宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) {&lt;br /&gt;
                log(&#039;无法获取 dataset&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            log(&#039;当前索引: &#039; + currentLeft + &#039;, 总长度: &#039; + totalLength + &#039;, 新索引: &#039; + newLeft);&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
                log(&#039;重置到开始位置&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(0px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                ul[0].offsetHeight; // 强制重绘&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
                log(&#039;设置 transform: translateX(0px)&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                log(&#039;设置 transform: translateX(&#039; + translateX + &#039;px)&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        log(&#039;滚动定时器已启动，间隔: 5000ms&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            log(&#039;窗口大小改变&#039;);&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.css(&#039;width&#039;, (containerWidth * lis.length) + &#039;px&#039;);&lt;br /&gt;
            lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        log(&#039;开始初始化&#039;);&lt;br /&gt;
        log(&#039;jQuery 版本: &#039; + (typeof $ !== &#039;undefined&#039; ? $.fn.jquery : &#039;未加载&#039;));&lt;br /&gt;
        log(&#039;MediaWiki 版本: &#039; + (typeof mw !== &#039;undefined&#039; ? &#039;已加载&#039; : &#039;未加载&#039;));&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        log(&#039;用户提示初始化结果: &#039; + promptAdded);&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        log(&#039;jQuery 已加载，使用 jQuery ready&#039;);&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            log(&#039;jQuery ready 触发&#039;);&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            log(&#039;文档已加载，立即执行&#039;);&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        log(&#039;jQuery 未加载，等待加载&#039;);&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                log(&#039;DOMContentLoaded 触发&#039;);&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    log(&#039;jQuery 已加载&#039;);&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        log(&#039;注册 mobile.init hook&#039;);&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            log(&#039;mobile.init hook 触发&#039;);&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    log(&#039;脚本加载完成&#039;);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=722</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=722"/>
		<updated>2025-12-19T08:18:04Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果 - 修复版本&lt;br /&gt;
// 使用 transform 实现滚动，确保在移动端正常工作&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    var scrollInterval = null;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) {&lt;br /&gt;
            return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度&lt;br /&gt;
        lis.css({&lt;br /&gt;
            &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
            &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0 10px&#039;,&lt;br /&gt;
            &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
            &#039;flex-shrink&#039;: &#039;0&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器&lt;br /&gt;
        if (scrollInterval) {&lt;br /&gt;
            clearInterval(scrollInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 300);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 200);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 300);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=721</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=721"/>
		<updated>2025-12-19T08:16:48Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 调试：打印所有 li 的内容&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;找到 &#039; + lis.length + &#039; 个 li 元素:&#039;);&lt;br /&gt;
            lis.each(function(index) {&lt;br /&gt;
                console.log(&#039;li[&#039; + index + &#039;]: &#039; + $(this).text().trim());&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 检查并修复被分割的 li 元素&lt;br /&gt;
        // 如果第一个 li 包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;，说明被分割了&lt;br /&gt;
        if (lis.length &amp;gt; 0) {&lt;br /&gt;
            var firstLi = lis.eq(0);&lt;br /&gt;
            var firstText = firstLi.text().trim();&lt;br /&gt;
            &lt;br /&gt;
            // 检查第一个 li 是否被分割（包含&amp;quot;我们目前有&amp;quot;但不包含&amp;quot;次编辑&amp;quot;）&lt;br /&gt;
            if (firstText.indexOf(&#039;我们目前有&#039;) !== -1 &amp;amp;&amp;amp; firstText.indexOf(&#039;次编辑&#039;) === -1) {&lt;br /&gt;
                // 查找下一个包含&amp;quot;次编辑&amp;quot;的 li&lt;br /&gt;
                for (var i = 1; i &amp;lt; lis.length; i++) {&lt;br /&gt;
                    var nextLi = lis.eq(i);&lt;br /&gt;
                    var nextText = nextLi.text().trim();&lt;br /&gt;
                    &lt;br /&gt;
                    // 如果下一个 li 包含&amp;quot;次编辑&amp;quot;但不包含&amp;quot;我们目前有&amp;quot;，说明是分割的部分&lt;br /&gt;
                    if (nextText.indexOf(&#039;次编辑&#039;) !== -1 &amp;amp;&amp;amp; nextText.indexOf(&#039;我们目前有&#039;) === -1) {&lt;br /&gt;
                        // 合并内容&lt;br /&gt;
                        var combinedHtml = firstLi.html() + &#039; &#039; + nextLi.html();&lt;br /&gt;
                        firstLi.html(combinedHtml);&lt;br /&gt;
                        nextLi.remove(); // 删除被合并的 li&lt;br /&gt;
                        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
                            console.log(&#039;合并了被分割的 li 元素&#039;);&lt;br /&gt;
                        }&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 重新获取修复后的 li 列表&lt;br /&gt;
        lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行，确保居中）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行，内容居中&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;visible&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;clip&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                &#039;word-break&#039;: &#039;keep-all&#039;,&lt;br /&gt;
                &#039;word-wrap&#039;: &#039;normal&#039;,&lt;br /&gt;
                &#039;max-width&#039;: containerWidth + &#039;px&#039;&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            // 确保内容在 li 内居中&lt;br /&gt;
            var $content = $li.find(&#039;*&#039;).first();&lt;br /&gt;
            if ($content.length === 0) {&lt;br /&gt;
                // 如果没有子元素，直接设置 li 的文本对齐&lt;br /&gt;
                $li.css(&#039;text-align&#039;, &#039;center&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 如果有子元素，确保子元素也居中&lt;br /&gt;
                $content.css({&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;,&lt;br /&gt;
                    &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                    &#039;width&#039;: &#039;100%&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=720</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=720"/>
		<updated>2025-12-19T08:16:33Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    vertical-align: top !important;&lt;br /&gt;
    flex-shrink: 0 !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
    text-overflow: clip !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    word-break: keep-all !important;&lt;br /&gt;
    word-wrap: normal !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li * {&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=719</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=719"/>
		<updated>2025-12-19T08:13:16Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 10px !important;&lt;br /&gt;
    vertical-align: top !important;&lt;br /&gt;
    flex-shrink: 0 !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-overflow: ellipsis !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=718</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=718"/>
		<updated>2025-12-19T08:13:02Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度和样式（防止换行）&lt;br /&gt;
        lis.each(function() {&lt;br /&gt;
            var $li = $(this);&lt;br /&gt;
            // 先设置宽度，确保不换行&lt;br /&gt;
            $li.css({&lt;br /&gt;
                &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
                &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
                &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
                &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
                &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
                &#039;padding&#039;: &#039;0 10px&#039;,&lt;br /&gt;
                &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
                &#039;flex-shrink&#039;: &#039;0&#039;,&lt;br /&gt;
                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.each(function() {&lt;br /&gt;
                $(this).css({&lt;br /&gt;
                    &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
                    &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                    &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                    &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                    &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新和样式应用&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            // 再次确保所有 li 都有正确的样式（防止换行）&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length) {&lt;br /&gt;
                    var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
                    var containerWidth = siteNoticeScroll.width() || siteNoticeScroll[0].offsetWidth || siteNoticeScroll[0].clientWidth;&lt;br /&gt;
                    if (containerWidth &amp;gt; 0) {&lt;br /&gt;
                        lis.each(function() {&lt;br /&gt;
                            var $li = $(this);&lt;br /&gt;
                            $li.css({&lt;br /&gt;
                                &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
                                &#039;overflow&#039;: &#039;hidden&#039;,&lt;br /&gt;
                                &#039;text-overflow&#039;: &#039;ellipsis&#039;,&lt;br /&gt;
                                &#039;text-align&#039;: &#039;center&#039;&lt;br /&gt;
                            });&lt;br /&gt;
                        });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 200 : 100);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=717</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=717"/>
		<updated>2025-12-19T08:09:01Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    overflow: hidden !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    margin-bottom: 0.25em !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px !important;&lt;br /&gt;
    line-height: 25px !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform !important;&lt;br /&gt;
    -webkit-backface-visibility: hidden !important;&lt;br /&gt;
    backface-visibility: hidden !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 10px;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=716</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=716"/>
		<updated>2025-12-19T08:08:43Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 获取容器宽度（使用多种方法确保获取到）&lt;br /&gt;
        var containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 宽度和初始 transform（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
        var totalWidth = containerWidth * lis.length;&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: totalWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;margin&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;block&#039;,&lt;br /&gt;
            &#039;position&#039;: &#039;relative&#039;,&lt;br /&gt;
            &#039;white-space&#039;: &#039;nowrap&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;will-change&#039;: &#039;transform&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 设置每个 li 的宽度&lt;br /&gt;
        lis.css({&lt;br /&gt;
            &#039;width&#039;: containerWidth + &#039;px&#039;,&lt;br /&gt;
            &#039;height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;line-height&#039;: &#039;25px&#039;,&lt;br /&gt;
            &#039;list-style&#039;: &#039;none&#039;,&lt;br /&gt;
            &#039;float&#039;: &#039;left&#039;,&lt;br /&gt;
            &#039;display&#039;: &#039;inline-block&#039;,&lt;br /&gt;
            &#039;box-sizing&#039;: &#039;border-box&#039;,&lt;br /&gt;
            &#039;padding&#039;: &#039;0 10px&#039;,&lt;br /&gt;
            &#039;vertical-align&#039;: &#039;top&#039;,&lt;br /&gt;
            &#039;flex-shrink&#039;: &#039;0&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 清除之前的定时器（如果存在）&lt;br /&gt;
        var oldInterval = self.data(&#039;scrollInterval&#039;);&lt;br /&gt;
        if (oldInterval) {&lt;br /&gt;
            clearInterval(oldInterval);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                // 先移除 transition，立即跳转&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(0, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(0, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 正常滚动（使用 translate3d 启用 GPU 加速）&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算（使用命名空间避免重复绑定）&lt;br /&gt;
        $(window).off(&#039;resize.siteNoticeScroll&#039;).on(&#039;resize.siteNoticeScroll&#039;, function() {&lt;br /&gt;
            containerWidth = self.width() || self[0].offsetWidth || self[0].clientWidth;&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            var totalWidth = containerWidth * lis.length;&lt;br /&gt;
            ul.css(&#039;width&#039;, totalWidth + &#039;px&#039;);&lt;br /&gt;
            lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translate3d(&#039; + translateX + &#039;px, 0, 0)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 防止重复初始化&lt;br /&gt;
    var initialized = false;&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        if (initialized) {&lt;br /&gt;
            return; // 防止重复初始化&lt;br /&gt;
        }&lt;br /&gt;
        initialized = true;&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，延迟执行（避免重复）&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                if (!initialized) {&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 200);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039; &amp;amp;&amp;amp; !initialized) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            if (!initialized) {&lt;br /&gt;
                setTimeout(init, 200);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=715</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=715"/>
		<updated>2025-12-19T08:04:43Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 调试版本的 Mobile.js&lt;br /&gt;
// 如果正常版本不工作，可以使用这个版本查看调试信息&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    function log(message) {&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] &#039; + message);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        log(&#039;开始初始化用户提示&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        log(&#039;siteNoticeScroll 元素数量: &#039; + siteNoticeScroll.length);&lt;br /&gt;
        &lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        log(&#039;ul 元素数量: &#039; + ul.length);&lt;br /&gt;
        &lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var existingLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;现有 li 元素数量: &#039; + existingLis.length);&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
                log(&#039;当前用户: &#039; + (currentUser || &#039;未登录&#039;));&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            log(&#039;获取用户信息失败: &#039; + e.message);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        log(&#039;现有 userPrompt 元素数量: &#039; + promptElement.length);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            log(&#039;创建新的 userPrompt 元素&#039;);&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
            log(&#039;userPrompt 元素已添加到 DOM&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        var content = &#039;&#039;;&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置已登录用户内容&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置未登录用户内容&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        promptElement.html(content);&lt;br /&gt;
        log(&#039;userPrompt 内容已设置&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 验证元素是否存在&lt;br /&gt;
        var finalLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;最终 li 元素数量: &#039; + finalLis.length);&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        log(&#039;开始初始化滚动效果&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;找到 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (lis.length &amp;lt;= 1) {&lt;br /&gt;
            log(&#039;li 元素数量不足，不需要滚动&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        log(&#039;容器宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            log(&#039;容器宽度为0，延迟重试&#039;);&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 和 li 的宽度&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: (containerWidth * lis.length) + &#039;px&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
        log(&#039;设置 ul 宽度: &#039; + (containerWidth * lis.length) + &#039;, 每个 li 宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) {&lt;br /&gt;
                log(&#039;无法获取 dataset&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            log(&#039;当前索引: &#039; + currentLeft + &#039;, 总长度: &#039; + totalLength + &#039;, 新索引: &#039; + newLeft);&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
                log(&#039;重置到开始位置&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(0px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                ul[0].offsetHeight; // 强制重绘&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
                log(&#039;设置 transform: translateX(0px)&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                log(&#039;设置 transform: translateX(&#039; + translateX + &#039;px)&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        log(&#039;滚动定时器已启动，间隔: 5000ms&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            log(&#039;窗口大小改变&#039;);&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.css(&#039;width&#039;, (containerWidth * lis.length) + &#039;px&#039;);&lt;br /&gt;
            lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        log(&#039;开始初始化&#039;);&lt;br /&gt;
        log(&#039;jQuery 版本: &#039; + (typeof $ !== &#039;undefined&#039; ? $.fn.jquery : &#039;未加载&#039;));&lt;br /&gt;
        log(&#039;MediaWiki 版本: &#039; + (typeof mw !== &#039;undefined&#039; ? &#039;已加载&#039; : &#039;未加载&#039;));&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        log(&#039;用户提示初始化结果: &#039; + promptAdded);&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        log(&#039;jQuery 已加载，使用 jQuery ready&#039;);&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            log(&#039;jQuery ready 触发&#039;);&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            log(&#039;文档已加载，立即执行&#039;);&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        log(&#039;jQuery 未加载，等待加载&#039;);&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                log(&#039;DOMContentLoaded 触发&#039;);&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    log(&#039;jQuery 已加载&#039;);&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        log(&#039;注册 mobile.init hook&#039;);&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            log(&#039;mobile.init hook 触发&#039;);&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    log(&#039;脚本加载完成&#039;);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=714</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=714"/>
		<updated>2025-12-19T08:02:59Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 调试版本的 Mobile.js&lt;br /&gt;
// 如果正常版本不工作，可以使用这个版本查看调试信息&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    function log(message) {&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] &#039; + message);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        log(&#039;开始初始化用户提示&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        log(&#039;siteNoticeScroll 元素数量: &#039; + siteNoticeScroll.length);&lt;br /&gt;
        &lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        log(&#039;ul 元素数量: &#039; + ul.length);&lt;br /&gt;
        &lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var existingLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;现有 li 元素数量: &#039; + existingLis.length);&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
                log(&#039;当前用户: &#039; + (currentUser || &#039;未登录&#039;));&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            log(&#039;获取用户信息失败: &#039; + e.message);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        log(&#039;现有 userPrompt 元素数量: &#039; + promptElement.length);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            log(&#039;创建新的 userPrompt 元素&#039;);&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
            log(&#039;userPrompt 元素已添加到 DOM&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        var content = &#039;&#039;;&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置已登录用户内容&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置未登录用户内容&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        promptElement.html(content);&lt;br /&gt;
        log(&#039;userPrompt 内容已设置&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 验证元素是否存在&lt;br /&gt;
        var finalLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;最终 li 元素数量: &#039; + finalLis.length);&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        log(&#039;开始初始化滚动效果&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;找到 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (lis.length &amp;lt;= 1) {&lt;br /&gt;
            log(&#039;li 元素数量不足，不需要滚动&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        log(&#039;容器宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            log(&#039;容器宽度为0，延迟重试&#039;);&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        ul.width(containerWidth * lis.length).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.width(containerWidth);&lt;br /&gt;
        log(&#039;设置 ul 宽度: &#039; + (containerWidth * lis.length) + &#039;, 每个 li 宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 设置初始位置和过渡效果&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;margin-left&#039;: &#039;0px&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) {&lt;br /&gt;
                log(&#039;无法获取 dataset&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            log(&#039;当前索引: &#039; + currentLeft + &#039;, 总长度: &#039; + totalLength + &#039;, 新索引: &#039; + newLeft);&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
                log(&#039;重置到开始位置&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var marginLeft = -(newLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: marginLeft + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
            log(&#039;设置 margin-left: &#039; + marginLeft + &#039;px&#039;);&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        log(&#039;滚动定时器已启动，间隔: 5000ms&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            log(&#039;窗口大小改变&#039;);&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.width(containerWidth * lis.length);&lt;br /&gt;
            lis.width(containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: -(currentLeft * containerWidth) + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.37s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        log(&#039;开始初始化&#039;);&lt;br /&gt;
        log(&#039;jQuery 版本: &#039; + (typeof $ !== &#039;undefined&#039; ? $.fn.jquery : &#039;未加载&#039;));&lt;br /&gt;
        log(&#039;MediaWiki 版本: &#039; + (typeof mw !== &#039;undefined&#039; ? &#039;已加载&#039; : &#039;未加载&#039;));&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        log(&#039;用户提示初始化结果: &#039; + promptAdded);&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        log(&#039;jQuery 已加载，使用 jQuery ready&#039;);&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            log(&#039;jQuery ready 触发&#039;);&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            log(&#039;文档已加载，立即执行&#039;);&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        log(&#039;jQuery 未加载，等待加载&#039;);&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                log(&#039;DOMContentLoaded 触发&#039;);&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    log(&#039;jQuery 已加载&#039;);&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        log(&#039;注册 mobile.init hook&#039;);&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            log(&#039;mobile.init hook 触发&#039;);&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    log(&#039;脚本加载完成&#039;);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=713</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=713"/>
		<updated>2025-12-19T08:02:09Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 0.25em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    transition: transform 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: transform;&lt;br /&gt;
    -webkit-backface-visibility: hidden;&lt;br /&gt;
    backface-visibility: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 10px;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=712</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=712"/>
		<updated>2025-12-19T08:01:49Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置 ul 和 li 的宽度&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;width&#039;: (containerWidth * lis.length) + &#039;px&#039;,&lt;br /&gt;
            &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
            &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
        }).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 强制重绘&lt;br /&gt;
        ul[0].offsetHeight;&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var translateX = -(newLeft * containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            // 重置时先移除 transition，立即跳转，然后恢复&lt;br /&gt;
            if (newLeft === 0) {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;none&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(0px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(0px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
                // 强制重绘&lt;br /&gt;
                ul[0].offsetHeight;&lt;br /&gt;
                // 恢复 transition&lt;br /&gt;
                setTimeout(function() {&lt;br /&gt;
                    ul.css({&lt;br /&gt;
                        &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                        &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;&lt;br /&gt;
                    });&lt;br /&gt;
                }, 50);&lt;br /&gt;
            } else {&lt;br /&gt;
                ul.css({&lt;br /&gt;
                    &#039;-webkit-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-moz-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-o-transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;transition&#039;: &#039;transform 0.73s ease-in-out&#039;,&lt;br /&gt;
                    &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                    &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.css(&#039;width&#039;, (containerWidth * lis.length) + &#039;px&#039;);&lt;br /&gt;
            lis.css(&#039;width&#039;, containerWidth + &#039;px&#039;);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            var translateX = -(currentLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;-webkit-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-moz-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-o-transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;transform 0.37s ease-in-out&#039;,&lt;br /&gt;
                &#039;-webkit-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-moz-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-ms-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;-o-transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;,&lt;br /&gt;
                &#039;transform&#039;: &#039;translateX(&#039; + translateX + &#039;px)&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，立即执行&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=711</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=711"/>
		<updated>2025-12-19T07:58:50Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 0.25em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    -webkit-transition: margin-left 0.73s ease-in-out !important;&lt;br /&gt;
    -moz-transition: margin-left 0.73s ease-in-out !important;&lt;br /&gt;
    -o-transition: margin-left 0.73s ease-in-out !important;&lt;br /&gt;
    transition: margin-left 0.73s ease-in-out !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    white-space: nowrap !important;&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
    will-change: margin-left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    list-style: none !important;&lt;br /&gt;
    float: left !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: inline-block !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
    padding: 0 10px;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=710</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=710"/>
		<updated>2025-12-19T07:57:07Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 调试版本的 Mobile.js&lt;br /&gt;
// 如果正常版本不工作，可以使用这个版本查看调试信息&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    function log(message) {&lt;br /&gt;
        if (typeof console !== &#039;undefined&#039; &amp;amp;&amp;amp; console.log) {&lt;br /&gt;
            console.log(&#039;[SiteNotice] &#039; + message);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        log(&#039;开始初始化用户提示&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        log(&#039;siteNoticeScroll 元素数量: &#039; + siteNoticeScroll.length);&lt;br /&gt;
        &lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        log(&#039;ul 元素数量: &#039; + ul.length);&lt;br /&gt;
        &lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var existingLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;现有 li 元素数量: &#039; + existingLis.length);&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
                log(&#039;当前用户: &#039; + (currentUser || &#039;未登录&#039;));&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            log(&#039;获取用户信息失败: &#039; + e.message);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        log(&#039;现有 userPrompt 元素数量: &#039; + promptElement.length);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            log(&#039;创建新的 userPrompt 元素&#039;);&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
            log(&#039;userPrompt 元素已添加到 DOM&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        var content = &#039;&#039;;&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置已登录用户内容&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            content = &#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;;&lt;br /&gt;
            log(&#039;设置未登录用户内容&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        promptElement.html(content);&lt;br /&gt;
        log(&#039;userPrompt 内容已设置&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 验证元素是否存在&lt;br /&gt;
        var finalLis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;最终 li 元素数量: &#039; + finalLis.length);&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        log(&#039;开始初始化滚动效果&#039;);&lt;br /&gt;
        &lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) {&lt;br /&gt;
            log(&#039;未找到 siteNoticeScroll 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) {&lt;br /&gt;
            log(&#039;未找到 ul 元素&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        log(&#039;找到 &#039; + lis.length + &#039; 个 li 元素&#039;);&lt;br /&gt;
        &lt;br /&gt;
        if (lis.length &amp;lt;= 1) {&lt;br /&gt;
            log(&#039;li 元素数量不足，不需要滚动&#039;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        log(&#039;容器宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            log(&#039;容器宽度为0，延迟重试&#039;);&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        ul.width(containerWidth * lis.length).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.width(containerWidth);&lt;br /&gt;
        log(&#039;设置 ul 宽度: &#039; + (containerWidth * lis.length) + &#039;, 每个 li 宽度: &#039; + containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 设置初始位置和过渡效果&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;margin-left&#039;: &#039;0px&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) {&lt;br /&gt;
                log(&#039;无法获取 dataset&#039;);&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            log(&#039;当前索引: &#039; + currentLeft + &#039;, 总长度: &#039; + totalLength + &#039;, 新索引: &#039; + newLeft);&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
                log(&#039;重置到开始位置&#039;);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            var marginLeft = -(newLeft * containerWidth);&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: marginLeft + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
            log(&#039;设置 margin-left: &#039; + marginLeft + &#039;px&#039;);&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        log(&#039;滚动定时器已启动，间隔: 5000ms&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            log(&#039;窗口大小改变&#039;);&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.width(containerWidth * lis.length);&lt;br /&gt;
            lis.width(containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: -(currentLeft * containerWidth) + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.37s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        log(&#039;开始初始化&#039;);&lt;br /&gt;
        log(&#039;jQuery 版本: &#039; + (typeof $ !== &#039;undefined&#039; ? $.fn.jquery : &#039;未加载&#039;));&lt;br /&gt;
        log(&#039;MediaWiki 版本: &#039; + (typeof mw !== &#039;undefined&#039; ? &#039;已加载&#039; : &#039;未加载&#039;));&lt;br /&gt;
        &lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        log(&#039;用户提示初始化结果: &#039; + promptAdded);&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        log(&#039;jQuery 已加载，使用 jQuery ready&#039;);&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            log(&#039;jQuery ready 触发&#039;);&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            log(&#039;文档已加载，立即执行&#039;);&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        log(&#039;jQuery 未加载，等待加载&#039;);&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                log(&#039;DOMContentLoaded 触发&#039;);&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    log(&#039;jQuery 已加载&#039;);&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        log(&#039;注册 mobile.init hook&#039;);&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            log(&#039;mobile.init hook 触发&#039;);&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    log(&#039;脚本加载完成&#039;);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=709</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=709"/>
		<updated>2025-12-19T07:55:46Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// 移动端公告滚动效果&lt;br /&gt;
// 兼容 MobileFrontend 和桌面端&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        ul.width(containerWidth * lis.length).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.width(containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 设置初始位置和过渡效果&lt;br /&gt;
        ul.css({&lt;br /&gt;
            &#039;margin-left&#039;: &#039;0px&#039;,&lt;br /&gt;
            &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var totalLength = parseInt(dataset.length) || lis.length;&lt;br /&gt;
            var newLeft = currentLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            // 如果到达最后一个，重置到第一个（索引0）&lt;br /&gt;
            if (newLeft &amp;gt;= totalLength) {&lt;br /&gt;
                newLeft = 0;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: -(newLeft * containerWidth) + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.73s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.width(containerWidth * lis.length);&lt;br /&gt;
            lis.width(containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft &amp;lt; 0) currentLeft = 0;&lt;br /&gt;
            ul.css({&lt;br /&gt;
                &#039;margin-left&#039;: -(currentLeft * containerWidth) + &#039;px&#039;,&lt;br /&gt;
                &#039;transition&#039;: &#039;margin-left 0.37s ease-in-out&#039;&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (siteNoticeScroll.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (ul.length === 0) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
            ul.append(promptElement);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 设置内容&lt;br /&gt;
        if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
            // 已登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            // 未登录用户&lt;br /&gt;
            promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        // 先初始化用户提示（必须在滚动初始化之前）&lt;br /&gt;
        var promptAdded = initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 延迟初始化滚动效果，确保 DOM 完全更新&lt;br /&gt;
        setTimeout(function() {&lt;br /&gt;
            initSiteNoticeScroll();&lt;br /&gt;
        }, promptAdded ? 100 : 0);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，立即执行&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=708</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=708"/>
		<updated>2025-12-19T07:55:12Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 0.25em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    -webkit-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    -moz-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    -o-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    display: block;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: 0 10px;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=707</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.css&amp;diff=707"/>
		<updated>2025-12-19T07:51:29Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/* 这里放置的CSS将应用于移动版网站 */ /* 网站公告的 CSS - 移动端和桌面端通用 */  #siteNoticeScroll {     width: 100%;     height: 25px;     line-height: 25px;     overflow: hidden;     text-align: center;     margin-bottom: 0.25em;     position: relative; }  #siteNoticeScroll ul {     height: 25px;     line-height: 25px;     margin: 0;     padding: 0;     list-style: none;     -webkit-transition: margin-left 0.73s ease-in-out;     -m…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里放置的CSS将应用于移动版网站 */&lt;br /&gt;
/* 网站公告的 CSS - 移动端和桌面端通用 */&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 0.25em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    -webkit-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    -moz-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    -o-transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    transition: margin-left 0.73s ease-in-out;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: block;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: 0 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 移动端优化 */&lt;br /&gt;
@media screen and (max-width: 720px) {&lt;br /&gt;
    #siteNoticeScroll {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll ul {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    #siteNoticeScroll li {&lt;br /&gt;
        height: auto;&lt;br /&gt;
        min-height: 25px;&lt;br /&gt;
        line-height: 1.5;&lt;br /&gt;
        padding: 2px 10px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 确保在移动端也能正常显示 */&lt;br /&gt;
.mw-mf-viewport #siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=706</id>
		<title>MediaWiki:Mobile.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Mobile.js&amp;diff=706"/>
		<updated>2025-12-19T07:50:36Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/* 这里的任何JavaScript将为使用移动版网站的用户加载 */ (function() {     &amp;#039;use strict&amp;#039;;          // 初始化公告滚动     function initSiteNoticeScroll() {         var self = $(&amp;#039;#siteNoticeScroll&amp;#039;);         if (!self.length || !self[0]) return;                  var ul = self.find(&amp;#039;ul:first&amp;#039;);         if (!ul.length) return;                  var lis = ul.find(&amp;#039;li&amp;#039;);         if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为使用移动版网站的用户加载 */&lt;br /&gt;
(function() {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    &lt;br /&gt;
    // 初始化公告滚动&lt;br /&gt;
    function initSiteNoticeScroll() {&lt;br /&gt;
        var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
        if (!self.length || !self[0]) return;&lt;br /&gt;
        &lt;br /&gt;
        var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
        if (!ul.length) return;&lt;br /&gt;
        &lt;br /&gt;
        var lis = ul.find(&#039;li&#039;);&lt;br /&gt;
        if (lis.length &amp;lt;= 1) return; // 如果只有一个或没有项目，不需要滚动&lt;br /&gt;
        &lt;br /&gt;
        var containerWidth = self.width();&lt;br /&gt;
        if (containerWidth === 0) {&lt;br /&gt;
            // 如果宽度为0，可能是DOM还未完全加载，延迟重试&lt;br /&gt;
            setTimeout(initSiteNoticeScroll, 100);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        ul.width(containerWidth * lis.length).attr({&lt;br /&gt;
            &#039;data-left&#039;: 0,&lt;br /&gt;
            &#039;data-length&#039;: lis.length&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        lis.width(containerWidth);&lt;br /&gt;
        &lt;br /&gt;
        // 设置初始位置&lt;br /&gt;
        ul.css(&#039;marginLeft&#039;, &#039;0px&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 开始滚动&lt;br /&gt;
        var scrollInterval = window.setInterval(function() {&lt;br /&gt;
            var dataset = ul[0].dataset;&lt;br /&gt;
            if (!dataset) return;&lt;br /&gt;
            &lt;br /&gt;
            var oldLeft = parseInt(dataset.left) || 0;&lt;br /&gt;
            var newLeft = oldLeft + 1;&lt;br /&gt;
            &lt;br /&gt;
            if (newLeft &amp;gt;= parseInt(dataset.length) - 1) {&lt;br /&gt;
                newLeft = -1; // 重置到开始&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            ul.css(&#039;marginLeft&#039;, -(newLeft * containerWidth) + &#039;px&#039;);&lt;br /&gt;
            dataset.left = newLeft;&lt;br /&gt;
        }, 5000);&lt;br /&gt;
        &lt;br /&gt;
        // 窗口大小改变时重新计算&lt;br /&gt;
        $(window).on(&#039;resize&#039;, function() {&lt;br /&gt;
            containerWidth = self.width();&lt;br /&gt;
            if (containerWidth === 0) return;&lt;br /&gt;
            &lt;br /&gt;
            ul.width(containerWidth * lis.length);&lt;br /&gt;
            lis.width(containerWidth);&lt;br /&gt;
            &lt;br /&gt;
            var currentLeft = parseInt(ul[0].dataset.left) || 0;&lt;br /&gt;
            if (currentLeft === -1) currentLeft = 0;&lt;br /&gt;
            ul.css(&#039;marginLeft&#039;, -(currentLeft * containerWidth) + &#039;px&#039;);&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 保存 interval ID，以便后续清理&lt;br /&gt;
        self.data(&#039;scrollInterval&#039;, scrollInterval);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 初始化用户提示&lt;br /&gt;
    function initUserPrompt() {&lt;br /&gt;
        if ($(&#039;#siteNoticeScroll&#039;).length === 0 &amp;amp;&amp;amp; $(&#039;#userPrompt&#039;).length === 0) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var currentUser = null;&lt;br /&gt;
        try {&lt;br /&gt;
            if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get) {&lt;br /&gt;
                currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // 忽略错误&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
        &lt;br /&gt;
        // 如果页面没有 userPrompt 元素，创建一个&lt;br /&gt;
        if (promptElement.length === 0) {&lt;br /&gt;
            var siteNoticeScroll = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
            if (siteNoticeScroll.length &amp;gt; 0) {&lt;br /&gt;
                var ul = siteNoticeScroll.find(&#039;ul:first&#039;);&lt;br /&gt;
                if (ul.length &amp;gt; 0) {&lt;br /&gt;
                    promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
                    ul.append(promptElement);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if (promptElement.length &amp;gt; 0) {&lt;br /&gt;
            if (currentUser &amp;amp;&amp;amp; currentUser !== null &amp;amp;&amp;amp; currentUser !== &#039;&#039;) {&lt;br /&gt;
                // 已登录用户&lt;br /&gt;
                promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 未登录用户&lt;br /&gt;
                promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 等待 DOM 和 MediaWiki 加载完成&lt;br /&gt;
    function init() {&lt;br /&gt;
        // 初始化用户提示&lt;br /&gt;
        initUserPrompt();&lt;br /&gt;
        &lt;br /&gt;
        // 初始化滚动效果&lt;br /&gt;
        initSiteNoticeScroll();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 多种初始化方式，确保在移动端和桌面端都能工作&lt;br /&gt;
    if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
        // jQuery 已加载&lt;br /&gt;
        $(document).ready(function() {&lt;br /&gt;
            init();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        // 如果已经在 ready 状态，立即执行&lt;br /&gt;
        if (document.readyState === &#039;complete&#039; || document.readyState === &#039;interactive&#039;) {&lt;br /&gt;
            setTimeout(init, 100);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        // 等待 jQuery 加载&lt;br /&gt;
        if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
            document.addEventListener(&#039;DOMContentLoaded&#039;, function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    setTimeout(init, 100);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            // 如果 DOM 已加载，等待 jQuery&lt;br /&gt;
            var checkJQuery = setInterval(function() {&lt;br /&gt;
                if (typeof $ !== &#039;undefined&#039;) {&lt;br /&gt;
                    clearInterval(checkJQuery);&lt;br /&gt;
                    init();&lt;br /&gt;
                }&lt;br /&gt;
            }, 100);&lt;br /&gt;
            &lt;br /&gt;
            // 10秒后停止检查&lt;br /&gt;
            setTimeout(function() {&lt;br /&gt;
                clearInterval(checkJQuery);&lt;br /&gt;
            }, 10000);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // 使用 MediaWiki 的 hook（如果可用）&lt;br /&gt;
    if (typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook(&#039;mobile.init&#039;).add(function() {&lt;br /&gt;
            setTimeout(init, 200);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=%E6%96%87%E4%BB%B6:Logo.png&amp;diff=703</id>
		<title>文件:Logo.png</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=%E6%96%87%E4%BB%B6:Logo.png&amp;diff=703"/>
		<updated>2025-12-15T03:39:38Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=%E6%A8%A1%E6%9D%BF:%E9%A6%96%E9%A1%B5/styles.css&amp;diff=702</id>
		<title>模板:首页/styles.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=%E6%A8%A1%E6%9D%BF:%E9%A6%96%E9%A1%B5/styles.css&amp;diff=702"/>
		<updated>2025-12-15T03:29:41Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/* CSS used for https://www.mediawiki.org/wiki/MediaWiki/Homepage_improvements_2018 : */ .mainpage_row { 	display: flex; 	flex-direction: row; 	flex-flow: row wrap; 	justify-content: space-between; 	padding: 0; 	gap: 10px; 	margin-top: 10px; 	margin-bottom: 10px; /* eliminated by margin collapse on adjacent rows */ } .mainpage_box { 	flex: 1; 	min-width: 210px; 	border: 1px solid #a2a9b1; 	padding: 0 10px 10px 10px; 	box-shadow: 0 2px 2px rgba( 0, 0, 0, 0.2 );…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS used for https://www.mediawiki.org/wiki/MediaWiki/Homepage_improvements_2018 : */&lt;br /&gt;
.mainpage_row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	flex-flow: row wrap;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	gap: 10px;&lt;br /&gt;
	margin-top: 10px;&lt;br /&gt;
	margin-bottom: 10px; /* eliminated by margin collapse on adjacent rows */&lt;br /&gt;
}&lt;br /&gt;
.mainpage_box {&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	min-width: 210px;&lt;br /&gt;
	border: 1px solid #a2a9b1;&lt;br /&gt;
	padding: 0 10px 10px 10px;&lt;br /&gt;
	box-shadow: 0 2px 2px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
}&lt;br /&gt;
.mainpage_box h3 {&lt;br /&gt;
	/* Reset padding so is equal across skins */&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
	padding-top: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	/* Padding left gets overridden by headanchor gadget */&lt;br /&gt;
	margin: 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
/* Set padding left only if headanchor gadget is not enabled */&lt;br /&gt;
.mainpage_box h3:not(.tpl-vheadanchor-heading) {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mainpage_box h3 .header_icon {&lt;br /&gt;
	float: left;&lt;br /&gt;
	margin-right: 5px;&lt;br /&gt;
}&lt;br /&gt;
.mainpage_box .items {&lt;br /&gt;
	border-top: 1px solid #CCC;&lt;br /&gt;
	padding-top: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
.mainpage_box p:last-child {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
.mainpage_boxcontents_small {&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
/* Style the &amp;quot;other languages&amp;quot; box the same way as other boxes on the main page */&lt;br /&gt;
.mw-pt-languages {&lt;br /&gt;
	display: block;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: 1px solid #CCC;&lt;br /&gt;
	box-shadow: 0 2px 2px rgba(0,0,0,0.1);&lt;br /&gt;
	width: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-pt-languages-label {&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-right: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 719px) {&lt;br /&gt;
	.thumb {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	.thumb, .thumbinner {&lt;br /&gt;
		margin-left: auto;&lt;br /&gt;
		margin-right: auto;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* This offset is specifically tailored to the hackathon particiapnts photo */&lt;br /&gt;
/* It&#039;s a little bigger in the default skin than required, because timeless has */&lt;br /&gt;
/* larger than average margin for thumbs */&lt;br /&gt;
@media screen and (min-width: 1400px) {&lt;br /&gt;
	html:not(.vector-feature-page-tools-pinned-enabled) .mainpage_row {&lt;br /&gt;
		margin-right: 384px;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (min-width: 1680px) {&lt;br /&gt;
	.mainpage_row {&lt;br /&gt;
		margin-right: 384px;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Night mode styles */&lt;br /&gt;
@media screen {&lt;br /&gt;
	html.skin-theme-clientpref-night .header_icon img {&lt;br /&gt;
		filter: invert( 1 );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media screen {&lt;br /&gt;
	html.skin-theme-clientpref-night .header_icon img {&lt;br /&gt;
		filter: invert(1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=701</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=701"/>
		<updated>2025-12-15T03:09:08Z</updated>

		<summary type="html">&lt;p&gt;Admin：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:首页/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;audiences&amp;quot; class=&amp;quot;mainpage_row&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;mainpage_box&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;header_icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;[[File:Logo.png|20px|middle|link=]]&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;应用免开发改造，敏捷部署&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;mainpage-admins&amp;quot; title=&amp;quot; System administrators&amp;quot; class=&amp;quot;items&amp;quot;&amp;gt;&lt;br /&gt;
既无需开发改造应用，也无需适配数据库，通过在应用以配置方式敏捷部署，便可实现敏感数据以密文形式存储于数据库，让用户在无感知的情况下保护其重要数据不泄漏&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;mainpage_box&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;header_icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;[[File:Logo.png|20px|middle|link=]]&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;融入使用场景的细粒度加密防护&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;mainpage-users&amp;quot; title=&amp;quot;Users&amp;quot; class=&amp;quot;items&amp;quot;&amp;gt;&lt;br /&gt;
提供“主体到应用内用户，客体到字段级”的安全防护能力，将应用内的用户身份、字段或文档级数据相结合，实现对企业内部人员的敏感数据访问最小化授权&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;mainpage_box&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;header_icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;[[File:Logo.png|20px|middle|link=]]&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;密码控审一体化&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;mainpage-devs&amp;quot; title=&amp;quot; Developers&amp;quot; class=&amp;quot;items&amp;quot;&amp;gt;&lt;br /&gt;
将数据加密与访问控制、审计等技术结合，在加解密锚点施加访问控制策略，打造防绕过的数据防护机制，支持可追溯、防篡改的行为审计，每条日志主体追溯到人，保证事后追责&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;misc-news&amp;quot; class=&amp;quot;mainpage_row&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;mainpage_box&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;header_icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;[[File:Logo.png|20px|middle|link=]]&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;卓越的密码工程化能力&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
		&amp;lt;div id=mainpage-help-contribute&amp;quot; title=&amp;quot;Support and Contributing&amp;quot; class=&amp;quot;items&amp;quot;&amp;gt;&lt;br /&gt;
同时支持国密算法和国际算法，支持手机号、证件号、邮箱等字段保留格式加密。在单颗CPU上SM4加解密速度突破130Gbps，单CPU加密10亿条手机号仅耗时20秒，对生产场景业务效率影响降到更低&lt;br /&gt;
		&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;mainpage_box&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;header_icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot; role=&amp;quot;presentation&amp;quot;&amp;gt;[[File:Logo.png|20px|middle|link=]]&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;我们专注的行业&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;mainpage-news&amp;quot; title=&amp;quot;News&amp;quot; class=&amp;quot;items&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;div style=&amp;quot;margin: auto; vertical-align:top; text-align:{{dir|{{{1|{{PAGELANGUAGE}}}}}|right|left}}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;mainpage_boxcontents_small&amp;quot;&amp;gt;&lt;br /&gt;
政府、交通、医疗、运营商、学校等&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Gadget-scrollUpButton.js&amp;diff=700</id>
		<title>MediaWiki:Gadget-scrollUpButton.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Gadget-scrollUpButton.js&amp;diff=700"/>
		<updated>2025-12-15T03:07:54Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/**  * Copyright (c) 2021-present, 安忆.  *  * @author 安忆 zh:U:安忆  * @file scrollUpButton.js  * @license GPL v3  */ $(function scrollUpButton() {   var $window = $(window);   var scrollButtonIcon = &amp;#039;//upload.wikimedia.org/wikipedia/commons/5/59/Font_Awesome_5_regular_arrow-circle-up_blue.svg&amp;#039;;   if (!document.implementation.hasFeature(&amp;#039;http://www.w3.org/TR/SVG11/feature#Image&amp;#039;, &amp;#039;1.1&amp;#039;)) {     scrollButtonIcon = &amp;#039;//upload.wikimedia.org/wikipedia/com…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Copyright (c) 2021-present, 安忆.&lt;br /&gt;
 *&lt;br /&gt;
 * @author 安忆 [[zh:U:安忆]]&lt;br /&gt;
 * @file scrollUpButton.js&lt;br /&gt;
 * @license GPL v3&lt;br /&gt;
 */&lt;br /&gt;
$(function scrollUpButton() {&lt;br /&gt;
  var $window = $(window);&lt;br /&gt;
  var scrollButtonIcon = &#039;//upload.wikimedia.org/wikipedia/commons/5/59/Font_Awesome_5_regular_arrow-circle-up_blue.svg&#039;;&lt;br /&gt;
  if (!document.implementation.hasFeature(&#039;http://www.w3.org/TR/SVG11/feature#Image&#039;, &#039;1.1&#039;)) {&lt;br /&gt;
    scrollButtonIcon = &#039;//upload.wikimedia.org/wikipedia/commons/thumb/5/59/Font_Awesome_5_regular_arrow-circle-up_blue.svg/32px-Font_Awesome_5_regular_arrow-circle-up_blue.svg.png&#039;;&lt;br /&gt;
  }&lt;br /&gt;
  var changeOpacity = function changeOpacity(event) {&lt;br /&gt;
    event.currentTarget.style.opacity = event.type === &#039;mouseenter&#039; ? &#039;1&#039; : &#039;0.7&#039;;&lt;br /&gt;
  };&lt;br /&gt;
  var scrollTop = function scrollTop(height) {&lt;br /&gt;
    $(&#039;html, body&#039;).animate({&lt;br /&gt;
      scrollTop: height&lt;br /&gt;
    }, 660);&lt;br /&gt;
  };&lt;br /&gt;
  var $scrollButton = $(&#039;&amp;lt;img&amp;gt;&#039;).addClass(&#039;noprint&#039;).attr({&lt;br /&gt;
    draggable: &#039;false&#039;,&lt;br /&gt;
    src: scrollButtonIcon&lt;br /&gt;
  }).css({&lt;br /&gt;
    display: &#039;none&#039;,&lt;br /&gt;
    position: &#039;fixed&#039;,&lt;br /&gt;
    right: &#039;18px&#039;,&lt;br /&gt;
    cursor: &#039;pointer&#039;,&lt;br /&gt;
    opacity: &#039;0.7&#039;,&lt;br /&gt;
    &#039;-moz-user-select&#039;: &#039;none&#039;,&lt;br /&gt;
    &#039;-webkit-user-select&#039;: &#039;none&#039;,&lt;br /&gt;
    &#039;user-select&#039;: &#039;none&#039;&lt;br /&gt;
  });&lt;br /&gt;
  var $scrollDownButton = $scrollButton.clone().attr(&#039;id&#039;, &#039;scrollDownButton-zhwiki&#039;).css(&#039;transform&#039;, &#039;rotate(180deg)&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
    scrollTop(($(document).height() || 0) - ($window.height() || 0));&lt;br /&gt;
  });&lt;br /&gt;
  var $scrollUpButton = $scrollButton.clone().attr(&#039;id&#039;, &#039;scrollUpButton-zhwiki&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
    scrollTop(0);&lt;br /&gt;
  });&lt;br /&gt;
  var $elements = [$scrollDownButton, $scrollUpButton];&lt;br /&gt;
  $elements.forEach(function ($element) {&lt;br /&gt;
    $element.on(&#039;mouseenter mouseleave&#039;, changeOpacity).appendTo(document.body);&lt;br /&gt;
  });&lt;br /&gt;
  var fadeIn = function fadeIn() {&lt;br /&gt;
    $elements.forEach(function ($element) {&lt;br /&gt;
      $element.fadeIn(&#039;slow&#039;);&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
  var fadeOut = function fadeOut() {&lt;br /&gt;
    $elements.forEach(function ($element) {&lt;br /&gt;
      $element.fadeOut(&#039;slow&#039;);&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
  var left = function left(px) {&lt;br /&gt;
    $elements.forEach(function ($element) {&lt;br /&gt;
      $element.css(&#039;left&#039;, px ? px + &#039;px&#039; : &#039;unset&#039;);&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
  var right = function right(px) {&lt;br /&gt;
    $elements.forEach(function ($element) {&lt;br /&gt;
      $element.css(&#039;right&#039;, px ? px + &#039;px&#039; : &#039;unset&#039;);&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
  var mediaQueryList = window.matchMedia(&#039;(min-width: 1400px)&#039;);&lt;br /&gt;
  var isVector2022Match = false;&lt;br /&gt;
  if (mw.config.get(&#039;skin&#039;) === &#039;vector-2022&#039;) {&lt;br /&gt;
    var mediaQueryHandler = function mediaQueryHandler(event) {&lt;br /&gt;
      if (event.matches) {&lt;br /&gt;
        isVector2022Match = true;&lt;br /&gt;
        right(8);&lt;br /&gt;
      } else {&lt;br /&gt;
        isVector2022Match = false;&lt;br /&gt;
        right(18);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    // Check mediaQueryList as Safari doesn&#039;t have support for mediaQueryList.addEventListener&lt;br /&gt;
    try {&lt;br /&gt;
      mediaQueryList.addEventListener(&#039;change&#039;, mediaQueryHandler);&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
      mediaQueryList.addListener(mediaQueryHandler);&lt;br /&gt;
    }&lt;br /&gt;
    if (mediaQueryList.matches) {&lt;br /&gt;
      isVector2022Match = true;&lt;br /&gt;
      right(8);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var scrollButtonTimer;&lt;br /&gt;
  $window.on(&#039;scroll selectionchange&#039;, function () {&lt;br /&gt;
    var dingHeight = $(&#039;#bluedeck_ding&amp;gt;div&#039;).height() || 0;&lt;br /&gt;
    var vector2022Height = isVector2022Match ? 24 : 0;&lt;br /&gt;
    $scrollDownButton.css(&#039;bottom&#039;, dingHeight + vector2022Height + 24 + &#039;px&#039;);&lt;br /&gt;
    $scrollUpButton.css(&#039;bottom&#039;, dingHeight + vector2022Height + 65 + &#039;px&#039;);&lt;br /&gt;
    if (mw.config.get(&#039;wgGEHelpPanelEnabled&#039;) &amp;amp;&amp;amp; $(&#039;#mw-ge-help-panel-cta-button&#039;).length || $(&#039;#cat_a_lot&#039;).length || $(&#039;#proveit&#039;).length || $(&#039;.wordcount&#039;).length) {&lt;br /&gt;
      left(10);&lt;br /&gt;
    } else {&lt;br /&gt;
      left();&lt;br /&gt;
    }&lt;br /&gt;
    var windowScrollTop = $window.scrollTop() || 0;&lt;br /&gt;
    if (windowScrollTop &amp;gt; 60) {&lt;br /&gt;
      fadeIn();&lt;br /&gt;
    } else {&lt;br /&gt;
      fadeOut();&lt;br /&gt;
    }&lt;br /&gt;
    clearTimeout(scrollButtonTimer);&lt;br /&gt;
    scrollButtonTimer = setTimeout(fadeOut, 2000);&lt;br /&gt;
  });&lt;br /&gt;
  $elements.forEach(function ($element) {&lt;br /&gt;
    $element.on(&#039;mouseenter&#039;, function () {&lt;br /&gt;
      clearTimeout(scrollButtonTimer);&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Gadget-Edittools.js&amp;diff=699</id>
		<title>MediaWiki:Gadget-Edittools.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Gadget-Edittools.js&amp;diff=699"/>
		<updated>2025-12-15T03:07:18Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/**  * EditTools support: add a selector, change &amp;lt;a&amp;gt; into buttons.  * The special characters to insert are defined at MediaWiki:Edittools.  *  * @author Arnomane, 2006 (on the commons.wikimedia.org/wiki/MediaWiki:Edittools.js)  * @author Kaganer, 2007 (adapting to www.mediawiki.org)  * @author Krinkle, 2012  * @source www.mediawiki.org/wiki/MediaWiki:Gadget-Edittools.js  * @revision 2019-12-17  */ /*jslint browser: true*/ /*global jQuery, mediaWiki*/ (funct…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * EditTools support: add a selector, change &amp;lt;a&amp;gt; into buttons.&lt;br /&gt;
 * The special characters to insert are defined at [[MediaWiki:Edittools]].&lt;br /&gt;
 *&lt;br /&gt;
 * @author Arnomane, 2006 (on the commons.wikimedia.org/wiki/MediaWiki:Edittools.js)&lt;br /&gt;
 * @author Kaganer, 2007 (adapting to www.mediawiki.org)&lt;br /&gt;
 * @author Krinkle, 2012&lt;br /&gt;
 * @source www.mediawiki.org/wiki/MediaWiki:Gadget-Edittools.js&lt;br /&gt;
 * @revision 2019-12-17&lt;br /&gt;
 */&lt;br /&gt;
/*jslint browser: true*/&lt;br /&gt;
/*global jQuery, mediaWiki*/&lt;br /&gt;
(function ($, mw) {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var conf, editTools, $sections;&lt;br /&gt;
&lt;br /&gt;
	conf = {&lt;br /&gt;
		initialSubset: window.EditTools_initial_subset === undefined ? window.EditTools_initial_subset : 0&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	editTools = {&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Creates the selector&lt;br /&gt;
		 */&lt;br /&gt;
		setup: function () {&lt;br /&gt;
			var $container, $select, initial;&lt;br /&gt;
&lt;br /&gt;
			$container = $(&#039;#mw-edittools-charinsert&#039;);&lt;br /&gt;
			if (!$container.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			$sections = $container.find(&#039;.mw-edittools-section&#039;);&lt;br /&gt;
			if ($sections.length &amp;lt;= 1) {&lt;br /&gt;
				// Only care if there is more than one&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$select = $(&#039;&amp;lt;select&amp;gt;&#039;).css(&#039;display&#039;, &#039;inline&#039;);&lt;br /&gt;
&lt;br /&gt;
			initial = conf.initialSubset;&lt;br /&gt;
			if (isNaN(initial) || initial &amp;lt; 0 || initial &amp;gt;= $select.length) {&lt;br /&gt;
				initial = 0;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$sections.each(function (i, el) {&lt;br /&gt;
				var $section, sectionTitle, $option;&lt;br /&gt;
&lt;br /&gt;
				$section = $(el);&lt;br /&gt;
				sectionTitle = $section.data(&#039;sectionTitle&#039;);&lt;br /&gt;
&lt;br /&gt;
				$option = $(&#039;&amp;lt;option&amp;gt;&#039;)&lt;br /&gt;
					.text(sectionTitle)&lt;br /&gt;
					.prop(&#039;value&#039;, i)&lt;br /&gt;
					.prop(&#039;selected&#039;, i === initial);&lt;br /&gt;
&lt;br /&gt;
				$select.append($option);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			$select.change(editTools.handleOnchange);&lt;br /&gt;
			$container.prepend($select);&lt;br /&gt;
&lt;br /&gt;
			editTools.chooseSection(initial);&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Handle onchange event of the &amp;lt;select&amp;gt;&lt;br /&gt;
		 *&lt;br /&gt;
		 * @context {Element}&lt;br /&gt;
		 * @param e {jQuery.Event}&lt;br /&gt;
		 */&lt;br /&gt;
		handleOnchange: function () {&lt;br /&gt;
			editTools.chooseSection(Number($(this).val()));&lt;br /&gt;
&lt;br /&gt;
			return true;&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Toggle the currently visible section&lt;br /&gt;
		 *&lt;br /&gt;
		 * @param sectionNr {Number}&lt;br /&gt;
		 * @param setFocus {Boolean}&lt;br /&gt;
		 */&lt;br /&gt;
		chooseSection: function (sectionNr) {&lt;br /&gt;
			var $choise = $sections.eq(sectionNr);&lt;br /&gt;
			if ($choise.length !== 1) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Making these buttons is a little slow,&lt;br /&gt;
			// If we made them all at once the browser would hang&lt;br /&gt;
			// for over 2 seconds, so instead we&#039;re doing it on-demand&lt;br /&gt;
			// for each section. No need to do it twice thoguh, so remember&lt;br /&gt;
			// in data whether it was done already&lt;br /&gt;
			if (!$choise.data(&#039;charInsert.buttonsMade&#039;)) {&lt;br /&gt;
				$choise.data(&#039;charInsert.buttonsMade&#039;, true);&lt;br /&gt;
				editTools.makeButtons($choise);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$choise.show();&lt;br /&gt;
			$sections.not($choise).hide();&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Convert the &amp;lt;a onclick&amp;gt; links to buttons in a given section.&lt;br /&gt;
		 *&lt;br /&gt;
		 * @param $section {jQuery}&lt;br /&gt;
		 */&lt;br /&gt;
		makeButtons: function ($section) {&lt;br /&gt;
			var $links;&lt;br /&gt;
&lt;br /&gt;
			if (!$section.length) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$links = $section.find(&#039;a&#039;);&lt;br /&gt;
			$links.each(function (i, a) {&lt;br /&gt;
				var $a, $button, start, end;&lt;br /&gt;
				$a = $(a);&lt;br /&gt;
				$button = $( &#039;&amp;lt;input&amp;gt;&#039; ).attr( &#039;type&#039;, &#039;button&#039; );&lt;br /&gt;
				start = $a.data( &#039;mw-charinsert-start&#039; );&lt;br /&gt;
				end = $a.data( &#039;mw-charinsert-end&#039; );&lt;br /&gt;
				if ( start !== undefined &amp;amp;&amp;amp; end !== undefined ) {&lt;br /&gt;
					$button.click( function( e ) {&lt;br /&gt;
						e.preventDefault();&lt;br /&gt;
						$(&#039;#wpTextbox1&#039;).textSelection(&#039;encapsulateSelection&#039;, {pre: start, post: end});&lt;br /&gt;
					} );&lt;br /&gt;
				} else {&lt;br /&gt;
					$button[0].onclick = a.onclick;&lt;br /&gt;
                                }&lt;br /&gt;
				$button[0].value = $a.text();&lt;br /&gt;
				$a.replaceWith($button);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	$(document).ready(editTools.setup);&lt;br /&gt;
&lt;br /&gt;
}(jQuery, mediaWiki));&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Gadgets-definition&amp;diff=698</id>
		<title>MediaWiki:Gadgets-definition</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Gadgets-definition&amp;diff=698"/>
		<updated>2025-12-15T03:06:42Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“== editing-gadgets == * Edittools[ResourceLoader|default|actions=edit]|Edittools.js == 上下按钮 == * scrollUpButton[ResourceLoader|default]|scrollUpButton.js”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== editing-gadgets ==&lt;br /&gt;
* Edittools[ResourceLoader|default|actions=edit]|Edittools.js&lt;br /&gt;
== 上下按钮 ==&lt;br /&gt;
* scrollUpButton[ResourceLoader|default]|scrollUpButton.js&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Sitenotice&amp;diff=697</id>
		<title>MediaWiki:Sitenotice</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Sitenotice&amp;diff=697"/>
		<updated>2025-12-15T03:06:17Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“- &amp;lt;p style=&amp;quot;font-size: 16px; color: red;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;炼石就是数据安全！&amp;lt;/p&amp;gt; &amp;lt;div id=&amp;quot;siteNoticeScroll&amp;quot;&amp;gt; &amp;lt;ul&amp;gt; &amp;lt;li&amp;gt;我们目前有{{NUMBEROFPAGES}}个页面，{{NUMBEROFUSERS}}个用户，{{NUMBEROFEDITS}}次编辑。&amp;lt;/li&amp;gt; &amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt;”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 16px; color: red;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;炼石就是数据安全！&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;siteNoticeScroll&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;我们目前有{{NUMBEROFPAGES}}个页面，{{NUMBEROFUSERS}}个用户，{{NUMBEROFEDITS}}次编辑。&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Common.css&amp;diff=696</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Common.css&amp;diff=696"/>
		<updated>2025-12-15T03:05:28Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/* 这里放置的CSS将应用于所有皮肤 */ /* 网站公告的css */ #siteNoticeScroll {     width: 100%;     height: 25px;     line-height: 25px;     overflow: hidden;     text-align: center;     margin-bottom: 0.25em; }  #siteNoticeScroll ul {     height: 25px;     line-height: 25px;     -webkit-transition: margin .73s ease-in-out;     -moz-transition: margin .73s ease-in-out;     transition: margin .73s ease-in-out; }  #siteNoticeScroll li {     height:…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里放置的CSS将应用于所有皮肤 */&lt;br /&gt;
/* 网站公告的css */&lt;br /&gt;
#siteNoticeScroll {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll ul {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    line-height: 25px;&lt;br /&gt;
    -webkit-transition: margin .73s ease-in-out;&lt;br /&gt;
    -moz-transition: margin .73s ease-in-out;&lt;br /&gt;
    transition: margin .73s ease-in-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#siteNoticeScroll li {&lt;br /&gt;
    height: 25px;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lianshibaike.com/index.php?title=MediaWiki:Common.js&amp;diff=695</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="http://lianshibaike.com/index.php?title=MediaWiki:Common.js&amp;diff=695"/>
		<updated>2025-12-15T03:04:54Z</updated>

		<summary type="html">&lt;p&gt;Admin：​创建页面，内容为“/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */ /* sitenotice */ $(function () {     var self = $(&amp;#039;#siteNoticeScroll&amp;#039;);     if (!self[0]) return;     var ul = self.find(&amp;#039;ul:first&amp;#039;);     ul.width(self.width() * self.find(&amp;#039;li&amp;#039;).length).attr({         &amp;#039;data-left&amp;#039;: 0,         &amp;#039;data-length&amp;#039;: self.find(&amp;#039;li&amp;#039;).length     }).find(&amp;#039;li&amp;#039;).width(self.width());     window.setInterval(function () {         var dataset = ul[0].dataset,…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
/* sitenotice */&lt;br /&gt;
$(function () {&lt;br /&gt;
    var self = $(&#039;#siteNoticeScroll&#039;);&lt;br /&gt;
    if (!self[0]) return;&lt;br /&gt;
    var ul = self.find(&#039;ul:first&#039;);&lt;br /&gt;
    ul.width(self.width() * self.find(&#039;li&#039;).length).attr({&lt;br /&gt;
        &#039;data-left&#039;: 0,&lt;br /&gt;
        &#039;data-length&#039;: self.find(&#039;li&#039;).length&lt;br /&gt;
    }).find(&#039;li&#039;).width(self.width());&lt;br /&gt;
    window.setInterval(function () {&lt;br /&gt;
        var dataset = ul[0].dataset,&lt;br /&gt;
            oldLeft = +dataset.left;&lt;br /&gt;
        ul.css(&#039;marginLeft&#039;, -(++oldLeft * self.width()) + &#039;px&#039;).delay(730).queue(function () {&lt;br /&gt;
            dataset.left = oldLeft === +dataset.length - 1 ? -1 : oldLeft;&lt;br /&gt;
            $(this).dequeue();&lt;br /&gt;
        });&lt;br /&gt;
    }, 5000);&lt;br /&gt;
    $(window).on(&#039;resize&#039;, function () {&lt;br /&gt;
        ul.width(self.width() * self.find(&#039;li&#039;).length).animate({&lt;br /&gt;
            marginLeft: -((+ul[0].dataset.left === -1 ? 0 : +ul[0].dataset.left) * self.width()) + &#039;px&#039;&lt;br /&gt;
        }, 370);&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
$(document).ready(function() {&lt;br /&gt;
    // 检查是否在需要显示提示的页面&lt;br /&gt;
    if ($(&#039;#siteNoticeScroll&#039;).length || $(&#039;#userPrompt&#039;).length) {&lt;br /&gt;
        var currentUser = mw.config.get(&#039;wgUserName&#039;);&lt;br /&gt;
        var showPrompt = true; // 可以从配置中获取&lt;br /&gt;
        &lt;br /&gt;
        if (showPrompt) {&lt;br /&gt;
            var promptElement = $(&#039;#userPrompt&#039;);&lt;br /&gt;
            &lt;br /&gt;
            // 如果页面没有userPrompt元素，创建一个&lt;br /&gt;
            if (promptElement.length === 0) {&lt;br /&gt;
                promptElement = $(&#039;&amp;lt;li id=&amp;quot;userPrompt&amp;quot;&amp;gt;&amp;lt;/li&amp;gt;&#039;);&lt;br /&gt;
                $(&#039;#siteNoticeScroll ul&#039;).append(promptElement);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            if (currentUser &amp;amp;&amp;amp; currentUser !== null) {&lt;br /&gt;
                // 已登录用户&lt;br /&gt;
                promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎回来，&#039; + currentUser + &#039;！感谢您对炼石百科的贡献！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
            } else {&lt;br /&gt;
                // 未登录用户&lt;br /&gt;
                promptElement.html(&#039;&amp;lt;strong&amp;gt;欢迎加入炼石百科&amp;lt;a href=&amp;quot;/wiki/Special:用户登录&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#3862AE&amp;quot;&amp;gt;注册一个账号&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;，一起参与编写吧！&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>