0

我正在为客户更新 wordpress 网站。我不得不打开服务器端缓存,因为由于插件太多,网站速度很慢。我对此无能为力,也无法禁用插件。

其中一个插件要求用户输入电子邮件以下载文件。如果插件看到有效的电子邮件,它会设置一个会话变量。然后页面重新加载。如果设置了该会话变量,则站点将显示一个下载按钮,而不是输入电子邮件表单字段和按钮。

由于启用了服务器端缓存,因此此功能将丢失。所以,我想做的是设置一个 cookie,然后检查 cookie 客户端,并交换 div 的内容( id="download" )。我对 Javascript 做的不多,并且无法使其正常工作。

我在 PHP 中设置了这样的 cookie:

setcookie( 'show_download', 1 );

我已经像这样设置了 div 的新内容(动态生成):

setcookie( 'new_content', '<div class="btn-ss-downloads"><a target="_blank" href="/wp-content/plugins/ss-downloads/services/getfile.php?file=4v-zR6fc6f/9vaROBr/dTJd/Tg/D 0-dT.vBx">Download Series 20 Datasheet</a></div>' );

我有一个函数可以读取我从另一篇文章中获得的 Javascript 中的 cookie:

<script type="text/javascript">

    function readCookie(name) {
        var ca = document.cookie.split(';');
        var nameEQ = name + "=";
        for(var i=0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return "";
    }

</script>

似乎正确的功能是调用readCookie( 'show_download' );. 如果 value = 1,则将 的内容与cookie<div id="download"></div>中存储的内容交换。new_content

鉴于我在这里介绍的作品,我如何在 Javascript 中完成这项工作?我想在我的 Wordpress 标题中添加一个 javascript 函数,如果它可以在这里工作的话。似乎我可以在页面呈现/加载后运行这个函数。我对浏览器和 javascript 的操作顺序不是很熟悉。请帮忙。

4

2 回答 2

0

为什么不考虑 AJAX?

如果需要检查地址的有效性,然后执行某些服务器操作以显示按钮,那么它看起来是使用 AJAX 的好地方。

$.post("downloader.php", { eml: mail_id })
    .done(function(data){ 
      if(data != "")
        $("div.btn-ss-downloads").html('<a href="' + data + '">Download</a>');
    });

这假定 downloader.php 进行了必要的检查并返回下载 URL。您可以将此逻辑(现在似乎是主页的一部分)分离到 downloader.php

于 2012-05-13T02:19:58.087 回答
0

这是你要找的吗?

(<head>)
<script type='text/javascript'>
    var showDownload = localStorage.getItem("showDownload") //or readCookie()
    if (showDownload == 1) {
        $(document).ready(function(){
            $("div.btn-ss-downloads").html("<a target='_blank'...</a>")
        )};
    }
</script>
(</head>)

请参阅http://api.jquery.com/html/https://developer.mozilla.org/en/DOM/Storage#localStorage

这使用 jQuery,您可以使用:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

(这是少数几次我提倡将 jQuery 用于如此简单的事情之一,因为$(document).ready它太棒了!)

于 2012-05-12T18:39:03.177 回答