2016-10-29 45 views
-2

我正在构建Chrome扩展程序,当有人访问特定站点时该扩展程序会重定向到网页。但是,我希望这一天只能打开一次网页,而不是每次打开一次。如何在Chrome扩展程序中每天只运行一次脚本

这是我使用的是什么:

function showOnceInADay() { 
    var user = getCookie("user"); 
    if (user != "") {} else { 
     // content.js 
     window.open('http://google.com') 
    } 
} 

但是,它不工作。

这是我想要运行的代码。

window.open ('http://google.com') 

这里的的manifest.json文件

{ 
    "manifest_version": 2, 
    "name": "My Cool Extension", 
    "version": "0.1", 

    "content_scripts": [{ 
     "matches": [ 
      "https://www.snapdeal.com/" 
     ], 
     "js": ["jquery-3.1.1.min.js", "content.js"] 
    }], 

    "browser_action": { 
     "default_icon": "icon.png" 
    } 
} 
+0

请[编辑]这个问题要切合主题:包括** **完全[MCVE]认为复制的问题。通常包括一个* manifest.json *,一些背景*和*内容脚本。寻求调试帮助的问题(“**为什么不是这个代码工作?”)必须包括:►期望的行为,►特定问题或错误*和*►在问题中重现问题所需的最短代码**本身**。没有明确问题陈述的问题对其他读者无益。请参阅:“**如何创建[mcve] **”,[我可以在此处询问哪些主题?](http://stackoverflow.com/help/on-topic)和[问]。 – Makyen

+0

如何调用'showOnceInADay()'。你定义了这个函数,但没有任何东西表明它曾经被调用过。 – Makyen

+0

showOnceInADay()在content.js文件中 –

回答

0

假设你有jQuery的饼干插件安装:

function showOnceInADay(){ 
    var user = $.cookie("user"), 
     day = $.cookie("day"); 
    var d = new Date(); 
    var checkDay = d.getDate(); 
    if (user === "" && checkDay != day) { 
     // content 
     window.open ('http://google.com'); 
     $.cookie("day", checkDay); 
    } 
} 

您可以使用Date()获取当前日期;方法,然后用当前日期进行交叉检查。

如果它们不匹配并且用户被定义,它将打开http://www.google.com/并将日期cookie设置为新的日期。

希望这会有所帮助! :-)

你可以在这里插件:jQuery Cookie

+0

尽管这可能有效,并且与OP已有的内容相一致,但从OP撰写的内容中可以看出,使用Cookie是以前访问尤其是从运行Chrome扩展的角度来记录。事实上,除非目标是将该信息提供给网页的服务器,否则使用cookie是一个坏主意,因为它可能会干扰网站的运行。 – Makyen

+0

@Makyen我知道这个:-)然而,直到他决定提供更多的信息。这是我能做的最好的 –

+0

其实,没有。您可以轻松使用Chrome扩展特定方法来存储日期信息,以免潜在地影响OP正在讨论的任何网站的操作。 – Makyen

相关问题