使用javascript在文本页面中插入Google广告

时间:2014-03-05 09:15:30

标签: javascript mediawiki

我正在尝试在我的mediawiki网站上的文本框的第一段之后插入Google广告。我的代码基于https://www.mediawiki.org/wiki/Extension:AdsWherever

我有一个返回标记的函数,该标记将呈现Google广告代码。 我正在使用javascript检查标签是否存在,如果不是我在第一段之后插入它。

问题是,在Google广告之后,文本框中的其他文字都没有显示。我认为这可能是因为函数返回一个值并且违反了代码,因此不允许其余的javascript代码运行。 (我可能错了,但这就是我认为的问题)。

如何在正确的位置插入Google广告,并在广告后仍显示文字? 我不介意完全跳过该功能,只是使用javascript插入代码但我不知道如何编写javascript所以var b包含google广告的javascript。

这是我的代码:

$wgHooks['ParserFirstCallInit'][] = 'AdsSetup';
$wgHooks['EditPage::showEditForm:initial'][] = 'CheckHasTag';
function AdsSetup( &$parser ) {$parser->setHook( 'ads', 'AdsRender' ); return true;}
function AdsRender($input, $args ) {   
$input =""; $url = array(); global $wgOut;
$ad['goo1'] = '<html><br><script type="text/javascript">
        google_ad_client = "xxx";
        google_ad_width = 728;
        google_ad_height = 90;
        </script>
        <script type="text/javascript"
        src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
        </script><br></html>';
$media = $args['media'];
return $ad[$media];
}

// check if content has <goo1> tag
function CheckHasTag($editPage){
global $wgOut;
$wgOut->addScript('<script type="text/javascript">
    var editTextboxText = document.getElementById("wpTextbox1").value;
                var searchFor = "goo1";
                var searchResult = editTextboxText.search(searchFor);
                if(searchResult == -1){
                var a = editTextboxText;
                var b = "\n<ads media=goo1>\n";
                var findP = "\n"; 
                var p = editTextboxText.search(findP);
                var position = p;
                document.getElementById("wpTextbox1").value = a.substr(0, position) + b + a.substr(position);
                }                   
</script>');
return true;
}

1 个答案:

答案 0 :(得分:0)

var editTextboxText = document.getElementById("mw-content-text").innerHTML;
var searchFor = new RegExp("goo1");
if (searchFor.test(editTextboxText) === false) {

    var ad = document.createElement('ads');
    ad.setAttribute('media', 'goo1');
    var parent = document.getElementById("mw-content-text").getElementsByTagName('p')[0].parentNode;
    var secondParagraph = document.getElementById("mw-content-text").getElementsByTagName('p')[0].nextSibling;
    parent.insertBefore(ad, secondParagraph);
}

JSfiddle