Greasemonkey注入Adfly广告

时间:2011-08-16 16:45:58

标签: javascript browser greasemonkey userscripts

有没有办法将其转换为Greasemonkey代码?

<script>
var adfly_id = 517450;
var adfly_advert = 'banner';
var frequency_cap = 5;
var frequency_delay = 5;
var init_delay = 3;
</script>
<script src="http://adf.ly/js/entry.js"></script>

这是adf.ly的网站输入脚本,当添加到网站时会显示adf.ly广告。

我想创建一个脚本,在浏览时会在浏览器中加载adf.ly链接。

请帮忙! 谢谢:)

2 个答案:

答案 0 :(得分:1)

是的,从理论上讲。你只需要把这些写到头上。如果您在页面方向上加载它们,它们将在greasemonkey范围之外进行评估。您甚至可以在创建脚本标记后执行document.body.appendChild。所以,

var sc = document.createElement('script');
sc.src = "http://adf.ly/js/entry.js"
document.body.appendChild(sc);

对于另一个,可能更容易进行unsafeWindow.varname任务,如

unsafeWindow.adfly_id = 517450;
unsafeWindow.adfly_advert = 'banner';
unsafeWindow.frequency_cap = 5;
unsafeWindow.frequency_delay = 5;
unsafeWindow.init_delay = 3;

虽然您不希望在脚本中使用这些值,因为这些值可以由网站本身更改。使用它们可以让网站更好地控制用户浏览器,让他们做一些他们原本无法做到的事情(例如,通过XSS ajax访问其他网站的信息)。只写入unsafeWindow中的值,不要从中读取它们。

答案 1 :(得分:1)

您需要将JS注入页面。 Avoid unsafeWindow if you can

这是该脚本的完整Greasemonkey翻译:

// ==UserScript==
// @name            _adFly why?
// @include         http://YOUR_SITE/YOUR_PATH/*
// ==/UserScript==


function myCode () {
    //--- Set global variables for adFly.
    window.adfly_id         = 517450;
    window.adfly_advert     = 'banner';
    window.frequency_cap    = 5;
    window.frequency_delay  = 5;
    window.init_delay       = 3;
}

addJS_Node (null, null, myCode);
addJS_Node (null, "http://adf.ly/js/entry.js");

function addJS_Node (text, s_URL, funcToRun) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ    = document.getElementsByTagName('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}