使用本地存储来记住最小化时的jQuery模态弹出窗口,即使页面被重新加载或更改

vfh0ocws  于 2022-11-03  发布在  jQuery
关注(0)|答案(1)|浏览(147)

谢谢你提前和对不起我的英语不好.我不是一个javascript开发人员,因此它是困难的,对我来说,改善所有独自的代码,我在我的网站上,所以任何具体的帮助是非常欢迎的.
在footer.inc.php文件中,我有一个脚本,可以将主页中的url作为模态弹出窗口打开,我可以关闭它们或减少它们。

<script type="text/javascript">
    function modalWindow(name, title, url, width, height) {
        // per width ed height imposto dei valori di default così non occorre specificarli in ogni occasione
        width = typeof width === 'undefined' ? 800 : width;
        height = typeof height === 'undefined' ? 600 : height;

        // verifichiamo se nel body non esiste il sorgente per la dialog
        if (top.$('#dialog-'+name).length == 0) {

            // in questo caso lo creiamo:
            top.$('body').append('<div id="dialog-' +name+ '" title="' +title+ '" style="padding:0;"><iframe src="' + url + '" frameborder="no" style="position:absolute;width:100%;height:100%;" scrolling="yes"></div>');

        } else {

            // se il sorgente invece esiste già assegnamo la nuova url all´iframe:
             top.$('#dialog-' +name).attr('title', title);
             top.$('#dialog-' +name+ ' iframe').attr('src', url);
        }

        // Ok, adesso siamo pronti per lanciare la modale!
       top.$('#dialog-' +name).dialog({width: width, height: height});
        top.$('#dialog-' +name).dialog({width: width, height: height}).dialogExtend({"minimizable" : true}).dialog({ position: { my: "center", at: "center+20px", of: target } });
        $("#dialog").dialog({ position: { my: "center", at: "top+30%", of: window } });
    }
</script>
  • dialogExtend({“可最小化”:true})* 允许我最小化弹出窗口,但如果我刷新或更改页面,弹出窗口将丢失。

我可以问你如何改变和改进上面的代码,使打开的模态弹出窗口不会丢失,即使我改变或重新加载页面?
我得到了答案,但是,因为我不知道javascript足够好,我不能改善自己的代码。
再次感谢!

0qx6xfy6

0qx6xfy61#

你有一个函数,你调用它的时候参数很少,我会把这些参数保存在localStorage中,然后在重新加载页面的时候读取LS的内容并调用这个函数。

var modals = localStorage.getItem('modals');

if (modals) {
   modals = JSON.parse(modals);
} else {
   modals = [];
}

modals.forEach(args => {
   modalWindow(...args);
});

function modalWindow(name, title, url, width, height) {
   ...
   modals.push([name, title, url, width, height]);
   localStorage.setItem('modals', JSON.stringify(modals));
}

当你关闭列表时,你可能也想从列表中删除模态。你可以想出一个更好的数据结构来允许你这样做。

相关问题