⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getace.js

📁 数据库系统工程师的考点 难点 很值得一看的有
💻 JS
📖 第 1 页 / 共 2 页
字号:
    }
    sina_ads_navFeatures[feature] = (navigator.userAgent.toLowerCase().indexOf(
									       feature) != -1);
    return sina_ads_navFeatures[feature];
}

function IsIE() // 是否是msie 或者 opera
{
    return IsHasFeature("msie") && !window.opera;
}

/**
 * 返回flash的版本号
 */
function getFlashVersion() {
    var version = 0;
    var currentVersion = 3;
    var obj;
    if (navigator.plugins && navigator.mimeTypes.length) // 查看plugins是否存在
    {
	var flashPlugin = navigator.plugins["Shockwave Flash"];
	if (flashPlugin && flashPlugin.description) {
	    version = flashPlugin.description.replace(/([a-zA-Z]|\s)+/, "")
		.split(".")[0];
	}
    } else {
	if (navigator.userAgent
	    && navigator.userAgent.indexOf("Windows CE") >= 0) {
	    // windows CE
	    currentVersion = 3;
	    obj = 1;
	    while (obj) {
		try {
		    obj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."
					    + currentVersion);
		    currentVersion;
		} catch (e) {
		    obj = null;
		}
	    }
	} else if (IsIE()) {
	    try {
		var b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
	    } catch (e) {
		b = null;
	    }
	    if (b != null) {
		version = b.GetVariable("$version").split(" ")[1].split(",")[0];
	    }
	}
    }
    return version; // 返回插件的版本 看是否支持相关特性
}

// ------------------------------------------------------------------------------
// 显示部分的函数,目前除flash外采用模板方法
//显示一个广告位flash
function showFlashForOneSection(section, adData) {
    var sectionId = section['id'];
    var width = adData['width'] != null ? adData['width']
	: section['secw'] != null ? section['secw'] : "100%";
    var height = adData['height'] != null ? adData['height']
	: section['sech'] != null ? section['sech'] : "100%";
    var feedBackUrl = adData['clickUrl'];
    var flashSrc = adData['srcUrl'];
    var flashAD = new sinaFlash(flashSrc, "", width, height, "7", "", false,
				"high");
    flashAD.addParam("adlink", escape(feedBackUrl));
    flashAD.addVariable("adlink", escape(feedBackUrl));
    flashAD.addParam("wmode", "transparent");
    flashAD.addParam("scale", "exactfit");
    flashAD.write(sectionId);
}

//默认的模板
var sina_ads_adstyles = {};
sina_ads_adstyles['defaultTextStyle'] = {
    'head' :'<table width=300 border=1 bordercolor="blue"><tr style="padding:0pt 0pt 0pt 10px;background-color:yellow"><td>Sina广告</td></tr>',
    'span' :'<tr style="background-color:red"><td><div style="height:5px"></div></td></tr>',
    'body' :'<tr><td border=0><table onclick="window.open(\'%clickUrl%\')">' + '<tr style="font-weight:bold;color:blue;"><td>%title%</td></tr>' + '<tr><td>%text%</td></tr>' + '<tr style="font-size:12px;color:#060;"><td>%textUrl%</td></tr></table></td></tr>',
    'foot' :'</table>'
};

sina_ads_adstyles['defaultImageStyle'] = {
	'span' : '',
	'body' : '<a href="%clickUrl%" target="_blank">' + 
	    '<image border="0" src=%srcUrl% width=%width% height=%height%/></a>'
};
// 进行模板替换的函数
var templateVariables = [ 'title', 'text', 'textUrl', 'clickUrl', 'srcUrl', 'height', 'width' ];
function doTemplateReplace(template, adData) {
    var htmlText = template.concat();
    for ( var i = 0; i < templateVariables.length; i++) {
	var varName = templateVariables[i];
	var pattern = new RegExp('%' + varName + '%', 'g');
	htmlText = htmlText.replace(pattern, adData[varName]);
    }
    return htmlText;
}

function getHtmlForTextByTemplate(adData) {
    var htmlTemplate = sina_ads_config.textTemplate;
    var htmlCode = htmlTemplate['head'];
    for ( var i = 0; i < adData.length; i++) {
	if (i != 0) {
	    htmlCode += doTemplateReplace(htmlTemplate['span'], adData[i]);
	}
	htmlCode += doTemplateReplace(htmlTemplate['body'], adData[i]);
    }
    htmlCode += htmlTemplate['foot'];
    return htmlCode;
}

function getHtmlForImageByTemplate(adData) {
    var htmlTemplate = sina_ads_config.imageTemplate;
    var htmlCode = '';
    for ( var i = 0; i < adData.length; i++) {
	if (i != 0) {
	    htmlCode += doTemplateReplace(htmlTemplate['span'], adData[i]);
	}
	htmlCode += doTemplateReplace(htmlTemplate['body'], adData[i]);
    }
    return htmlCode;
}

function getHtmlByTemplate(adData) {
    var htmlCode = '';
    switch (adData[0]['type']) {
    case 'text':
	htmlCode += getHtmlForTextByTemplate(adData);
	break;
    case 'image':
	htmlCode += getHtmlForImageByTemplate(adData);
	break;
    default:
	// htmlCode += secConfig.sectionid + '没有符合条件的广告';
	break;
    }
    return htmlCode;
}

//调整广告数据形状大小
function adJustAdSizeForImageAndFlash(secConfig, adData)
{
    if (adData[0].type != 'image'/* && adData[0].type != 'flash'*/) {
	return;
    }
    if(adData[0].width == null) {
	if (secConfig.secw) {
	    adData[0].width = secConfig.secw;
	} else {
	    adData[0].width = "100%";
	}
    }
    if(adData[0].height == null) {
	if (secConfig.sech) {
	    adData[0].height = secConfig.sech;
	} else {
	    adData[0].height = "100%";
	}
    }
}

function reduceAdData(adData)
{
    if (adData == null) {
        return;
    }
    for (var i = adData.length - 1; i >=0; i--) {
        if (adData[i].type == null) {
            adData.splice(i, 1);
        }
    }
}

function showOneSection(secConfig, adData) {
    // 确定secDiv
    var secDiv;
    if (secConfig.domobject) {
	secDiv = secConfig.domobject;
    } else {
	secDiv = document.getElementById(secConfig.id);
    }
    //规范化adData
    reduceAdData(adData);
    if (adData == null || adData.length == 0) {
	// 无合适广告,隐藏div
	secDiv.innerHTML = "" + "";
    } else {
	adJustAdSizeForImageAndFlash(secConfig, adData);
	secDiv.style.display = "block";
	// 套模板
	if (adData[0]['type'] != 'flash') {
	    var innerHTML = getHtmlByTemplate(adData);
	    secDiv.innerHTML = innerHTML;
	} else {// 写入flash
	    showFlashForOneSection(secConfig, adData[0]);
	}
    }

    // /执行callback函数,可能是flowad需要
    if (secConfig.callbackAfterShow) {
	eval(secConfig.callbackAfterShow);
    }
}
function showAdControler(adControler) {
    var ads_data = adControler.ads_data;
    var ads_suite = adControler.suite;
    for ( var secIndex = 0; secIndex < ads_suite.length; secIndex++) {
	showOneSection(ads_suite[secIndex], ads_data[secIndex]);
    }
}
/**
 * showAd : 从服务端得到数据后显示最终的广告
 */
function showAd(adControler) {
    var ads_data = null;
    var ads_suite = null;
    if (adControler == null) {
	ads_data = window.sina_ads_data;
	ads_suite = window.sina_ads_suite;
    } else {
	showAdControler(adControler);
    }
    // 根据sina_ads_suite和sina_ads_data中的数据显示广告,可以从外部覆盖此方法
    if (ads_data == null || ads_data.length == null) {
	return;
    }
    for ( var secIndex = 0; secIndex < ads_suite.length; secIndex++) {
	showOneSection(ads_suite[secIndex], ads_data[secIndex]);
    }
}

// ------------------------------------------------------------------------------
/*
 * 设置申请用参数的各种函数
 */
var sina_ads_config_init = false;
var sinaAdDefaultConfig = {
    'adClientUrl' : {
	'defaultValue' :'http://match.sina.com.cn/dli/dli.php?'
    },
    'textTemplate' : {
	'defaultValue' :sina_ads_adstyles['defaultTextStyle']
    },
    'imageTemplate' : {
	'defaultValue' :sina_ads_adstyles['defaultImageStyle']
    },
    'keywordsElementName' : {
	'defaultValue' :'sina_flowad'
    },
    'keywordsQueryUrl' : {
	'defaultValue' :'http://match.sina.com.cn/admatchkeyword.php?'
    }
};

var sina_ads_globalParameter = {};
if (window['sina_ads_config'] == null) {
    window['sina_ads_config'] = {};
}

function InitSuiteParameter(adControler) {
    // 初始化sina_ads_config
    if (!sina_ads_config_init) {
	setObjectDefaultValue(sina_ads_config, sinaAdDefaultConfig);
	sina_ads_config_init = true;
    }
    setObjectDefaultValue(sina_ads_config, globalParameterInfoMap);
    for ( var param in globalParameterInfoMap) {
	// TODO modify from window to an object
	if (window[param] == null) {
	    window[param] = globalParameterInfoMap[param].defaultValue;
	}
    }
    // 为广告位增加非null的默认参数
    setDefaultSectionParameter(adControler.suite);
}

function printAdDynamicly(adUrl) {
    adUrl = adUrl.substring(0, 2000).replace(/%\w?$/, "");
    sina_ads_debug("申请url: " + adUrl);
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = var2String(adUrl);
    document.getElementsByTagName("head")[0].appendChild(script);
}

/**
 * 根据申请的url,浏览器的类型和是否支持DHTML及用户指定的格式等因素填充 输出申请代码
 */
function printAd(adUrl) {
    // 现在改为全部为js格式输出
    adUrl = adUrl.substring(0, 2000).replace(/%\w?$/, "");
    sina_ads_debug("申请url: " + adUrl);
    document
	.write('<script language="JavaScript" src=' + var2String(adUrl) + '><\/script>');
}

function createSinaAdDynamicly(adControler, isStatic) {
    // 先生成最后在url中需要捎带的参数数组,此时需要进行转码
    var suite = adControler.suite;
    var urlParameters = new Array();
    // 单独增加secnum
    addAdUrlParameter(urlParameters, 'secnum', suite.length);
    addAdUrlParameter(urlParameters, 'ctl', adControler.name);
    // 增加其他全局变量
    addGlobalUrlParameter(urlParameters, adControler.context, window);
    for (i = 0; i < suite.length; i++) {
	addASectionUrlParameter(urlParameters, suite[i], i);
    }
    if (adControler.adUrl == null) {
	adControler.adUrl = sina_ads_config.adClientUrl
	    + urlParameters.join('&');
    } else {
	adControler.adUrl += urlParameters.join('&');
    }
    // 用此url进行申请
    if (isStatic != null && isStatic == true) {
	printAd(adControler.adUrl);
    } else {
	printAdDynamicly(adControler.adUrl);
    }
}

// 此类用来存储suite信息和对应取回的data信息,供showAd使用
function SinaAdControler(ctlname, suite) {
    this.name = ctlname;
    this.suite = suite;
    this.adUrl = null;
    this.context = {};
}
// ------------------------------------------------------------------------------
/*
 * 获取广告的外部接口 1. 根据广告位名称获取广告 2. 根据已经定义好的suite获取广告 3. 根据定义好的单个广告位获取广告
 */
// 根据广告位名称获取广告,默认名字sina_ads_suite
function showSinaAds(suitename) {
    var suite_name;
    if (suitename != null) {
	suite_name = suitename;
    } else {
	suite_name = 'sina_ads_suite';
    }
    var suite = getAdSuite(suite_name);
    ;
    var ctlname = 'ad_controler_' + suitename;
    window[ctlname] = new SinaAdControler(ctlname, suite);
    InitSuiteParameter(window[ctlname]);
    createSinaAdDynamicly(window[ctlname], true);
}
// 根据定义好的suite数组获取广告,使用动态插入js而非document.write
function showAdsSuiteDynamicly(adControler) {
    InitSuiteParameter(adControler);
    createSinaAdDynamicly(adControler);
}

// ------------------------------------------------------------------------------
/*
 * 获取用户id的函数
 */
function getUserID() {
    userIDUrl = 'http://admatch.sina.com.cn/getuser.php';
    document
	.write('<script language="JavaScript" src=' + var2String(userIDUrl) + '><\/script>');
}
//------------------------------------------------------------------------------
getUserID();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -