织梦加入收藏没反应怎么办?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 织梦建站 正文

下面我将从最常见的原因其他可能的原因,为你提供一套详细的排查和解决方案。

织梦加入收藏没反应
(图片来源网络,侵删)

第一步:检查最常见的原因 - 浏览器安全策略

这是导致“加入收藏”功能失效的首要原因

问题现象:

用户点击“加入收藏”按钮,没有任何反应,浏览器控制台(按F12打开)可能也没有任何错误提示。

根本原因:

现代浏览器(如Chrome、Firefox、Edge、Safari)出于安全考虑,默认阻止了网页脚本直接执行 window.addFavorite()window.sidebar.addPanel() 等方法,因为这些方法可能会被恶意网站用来诱导用户收藏钓鱼网站。

解决方案:

不要直接调用 window.addFavorite(),而是采用更友好的兼容方案。

织梦加入收藏没反应
(图片来源网络,侵删)

请找到你模板中调用收藏功能的JS代码,它可能长这样:

// 不推荐且可能失效的写法
function AddFavorite(sURL, sTitle) {
    try {
        window.external.addFavorite(sURL, sTitle);
    } catch (e) {
        try {
            window.sidebar.addPanel(sTitle, sURL, "");
        } catch (e) {
            alert("加入收藏失败,请使用Ctrl+D进行添加");
        }
    }
}

请将其替换为以下兼容性更好、更健壮的代码:

// 推荐的、兼容性更好的写法
function AddFavorite(sURL, sTitle) {
    sURL = sURL || window.location.href; // 如果没有传入URL,则使用当前页URL= sTitle || document.title; // 如果没有传入标题,则使用当前页标题
    try {
        // IE浏览器
        window.external.addFavorite(sURL, sTitle);
    } catch (e) {
        try {
            // Firefox浏览器
            if (window.sidebar) {
                window.sidebar.addPanel(sTitle, sURL, "");
            }
        } catch (e) {
            // Chrome, Safari, Edge等其他浏览器
            // 创建一个隐藏的a标签,模拟点击
            var a = document.createElement('a');
            a.href = sURL;
            a.rel = "sidebar";
            a.title = sTitle;
            // 尝试触发收藏
            if (document.all) { // IE
                a.click();
            } else { // 其他浏览器
                var evt = document.createEvent('MouseEvents');
                evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                a.dispatchEvent(evt);
            }
            // 如果上述方法都失败,提示用户手动操作
            alert('您的浏览器不支持自动添加书签,请使用快捷键 ' + (navigator.userAgent.indexOf('Mac') != -1 ? 'Command/Cmd + D' : 'Ctrl + D') + ' 添加到收藏夹');
        }
    }
}

如何修改:

  1. 找到你的模板文件(通常是 head.htm 或者某个公共的JS文件,如 js/common.js)。
  2. 搜索 AddFavorite 函数,找到旧的代码并替换为上面提供的“推荐代码”。
  3. 保存文件,清除浏览器缓存,再次测试。

第二步:检查织梦标签调用

织梦系统使用特定的标签来生成收藏链接,如果标签使用错误,也可能导致问题。

织梦加入收藏没反应
(图片来源网络,侵删)

检查收藏链接的URL和标题是否正确

在你的模板文件中,找到“加入收藏”按钮的HTML部分,它应该使用了织梦的收藏标签。

正确的写法示例:

<a href="javascript:;" onclick="AddFavorite('{dede:global.cfg_basehost/}', '{dede:global.cfg_webname/}');">加入收藏</a>

需要检查的点:

  • {dede:global.cfg_basehost/}:这个标签会生成你的网站域名,如 https://www.yourdomain.com,请确保你的系统基本参数(后台 -> 系统 -> 系统基本参数)中的“站点根网址”配置正确。
  • {dede:global.cfg_webname/}:这个标签会生成你的网站名称,同样在“系统基本参数”中配置。

如果是在文章页,你可能想收藏当前文章,可以这样写:

<a href="javascript:;" onclick="AddFavorite('{dede:field name='arcurl'/}', '{dede:field name='title'/}');">收藏本文</a>
  • {dede:field name='arcurl'/}:获取当前文章的URL。
  • {dede:field name='title'/}:获取当前文章的标题。

请检查你的模板中,AddFavorite 函数调用的URL和标题参数是否正确。

检查JS文件是否正确加载

确保你的模板文件中正确引入了包含 AddFavorite 函数的JS文件。

<head> 标签内检查是否有类似这样的引入代码:

<script type="text/javascript" src="{dede:global.cfg_cmspath/}/js/common.js"></script>

如果这个JS文件路径错误,或者函数没有在这个文件里,那么点击按钮自然不会有反应。


第三步:检查浏览器缓存和插件

  1. 清除浏览器缓存:有时候浏览器会缓存旧的JS文件,导致修改不生效,请尝试按 Ctrl + F5 (或 Cmd + Shift + R on Mac) 强制刷新页面。
  2. 禁用浏览器插件:某些广告拦截插件或安全插件可能会阻止JS执行,尝试在无痕/隐私模式下访问,或者临时禁用所有插件,看问题是否解决。

第四步:检查浏览器控制台(开发者工具)

这是定位问题的利器。

  1. F12 键打开浏览器开发者工具。
  2. 切换到 Console (控制台) 标签页。
  3. 点击“加入收藏”按钮,观察控制台是否有红色的错误信息(Error)。
  • 如果出现 Uncaught TypeError: window.external.addFavorite is not a function 或类似错误:这证实了是第一步提到的浏览器安全策略问题,请按第一步的解决方案修改JS代码。
  • 如果出现 Uncaught ReferenceError: AddFavorite is not defined 错误:这说明你的JS函数没有被正确加载或定义,请检查第二步中提到的JS文件引入和函数定义是否正确。
  • 如果没有任何错误信息:那基本可以肯定是第一步的浏览器安全策略问题。

总结与排查清单

遇到“加入收藏没反应”问题,请按以下顺序排查:

  1. 【首要】检查并修改JS代码:将你的 AddFavorite 函数替换为上面提供的“推荐代码”,这是解决90%以上问题的关键。
  2. 【检查】织梦标签:确认调用 AddFavorite 时传入的URL和标题标签(如 {dede:global.cfg_basehost/})是否正确。
  3. 【检查】JS文件引入:确保包含 AddFavorite 函数的JS文件在页面中被正确加载。
  4. 【辅助】使用F12控制台:点击按钮后,查看控制台是否有错误信息,根据错误信息精准定位问题。
  5. 【清除缓存和禁用插件:排除浏览器缓存和插件干扰的可能性。

按照这个流程,绝大多数“加入收藏没反应”的问题都可以被顺利解决。

-- 展开阅读全文 --
头像
Java与C语言,核心差异与应用场景如何?
« 上一篇 04-23
织梦默认缩略图随机,如何固定指定图片?
下一篇 » 04-23

相关文章

取消
微信二维码
支付宝二维码

目录[+]