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

📄 getace.js

📁 数据库系统工程师的考点 难点 很值得一看的有
💻 JS
📖 第 1 页 / 共 2 页
字号:
/**
 * 本代码用来
 * 1. 分析广告位的定制参数,并生成最终用的申请url
 * 2. 将最终用的申请广告位的url,输出到html文档中
 *
 * 目前支持输出几种格式的
 * 1. 获取填充创意js
 * 2. 直接获取html创意代码
 * 3. 为多个广告位同时申请广告的js,并将其填充
 */

/**
 * 对于参数的信息定义,分为全局参数和各广告为独立参数两种,目前有4种信息 1. 是否需要添加到申请的url中 2. 在url参数中的缩写 3.
 * 添加到url参数时是否需要encode 4. 参数的默认值,用户未指定时取默认值
 */

// ==============================================================================
// debug用函数及变量
var debug_console = null;
var sina_ads_isdebug = 0;
function sina_ads_debug(msg) {
    if (!sina_ads_isdebug) {
	return;
    }
    window.open("", "debug_console", "width=800");
    if (debug_console == null || debug_console.closed) {
	debug_console = window.open("", "debug_console",
				    "width=800, height=300, resizable");
	if (debug_console.document.getElementById('debugoutput') == null) {
	    debug_console.document
		.writeln("<body><textarea cols=120 rows=30 id=debugoutput></textarea></body>");
	}
    }
    debug_console.focus();
    debug_console.document.getElementById('debugoutput').value += msg + "\n";
}

/**
 * 从meta中取keywords的函数
 */
function getKeywordsFromMeta() {
    var keywords = '';
    var metaArray = document.getElementsByTagName("meta");
    for ( var i = 0; i < metaArray.length; i++) {
	var obj = metaArray[i];
	if (obj.name == 'Keywords') {
	    var keyArray = obj.content.split(",");
	    for ( var j = 0; j < keyArray.length; j++) {
		if (keywords != '') {
		    keywords += ' ';
		}
		keywords += keyArray[j];
	    }
	}
    }
    if (keywords == "") {
	return null;
    } else {
	return keywords;
    }
}

// ==============================================================================
// 用到的全局变量
var sina_ads_navFeatures = {};

// 广告位定制参数在参数中的信息,包括是否需要编码到url中,缩写,是否需要encode,默认值等等
var sectionParameterInfoMap = {
    'sectionid' : {
	'isUrlParam' :true,
	'abbr' :'sid',
	'needEncode' :false,
	'defaultValue' :null
    },
    'adtype' : {
	'isUrlParam' :true,
	'abbr' :'t',
	'needEncode' :false,
	'defaultValue' :null
    },
    'requesttype' : { //请求类型
	'isUrlParam' :true,
	'abbr' :'rt',
	'needEncode' :false,
	'defaultValue' :null
    },
    'secw' : {
	'isUrlParam' :false,
	'abbr' :'w',
	'needEncode' :false,
	'defaultValue' :null
    },
    'sech' : {
	'isUrlParam' :false,
	'abbr' :'h',
	'needEncode' :false,
	'defaultValue' :null
    },
    'creativeid' : {
	'isUrlParam' :true,
	'abbr' :'cid',
	'needEncode' :false,
	'defaultValue' :null
    },
    'defad' : {
	'isUrlParam' :true,
	'abbr' :'df_ad',
	'needEncode' :true,
	'defaultValue' :null
    },
    'slotnum' : {
	'isUrlParam' :true,
	'abbr' :'slotnum',
	'needEncode' :false,
	'defaultValue' :null
    },
    'output' : {
	'isUrlParam' :true,
	'abbr' :'output',
	'needEncode' :false,
	'defaultValue' :null
    },
    'id' : {
	'isUrlParam' :false
    },
    'class' : {
	'isUrlParam' :false
    },
    // 内容定向相关参数
    'keyword' : {
	'isUrlParam' :true,
	'abbr' :'kw',
	'needEncode' :true,
	'defaultValue' :null
    },
    'region' : {
	'isUrlParam' :true,
	'abbr' :'rg',
	'needEncode' :true,
	'defaultValue' :null
    },
    /*
     * 格式相关的参数outerStyle,InnerStyle,titleStyle,textStyle,domainStyle
     * outerClass,innerClass,titleClass,textClass,domainClass
     */
    'outerStyle' : {
	'isUrlParam' :false,
	'defaultValue' :null
    },
    'innerStyle' : {
	'isUrlParam' :false,
	'defaultValue' :null
    },
    'titleStyle' : {
	'isUrlParam' :false,
	'defaultValue' :null
    },
    'textStyle' : {
	'isUrlParam' :false,
	'defaultValue' :null
    },
    'domainStyle' : {
	'isUrlParam' :false,
	'defaultValue' :null
    },
    'colNum' : {
	'isUrlParam' :false,
	'defaultValue' :1
    }
};

var globalParameterInfoMap = {
    'sina_ads_userid' : {
	'isUrlParam' :true,
	'abbr' :'uid',
	'needEncode' :false,
	'defaultValue' :null
    },
    'sina_ads_flash_version' : {
	'isUrlParam' :true,
	'abbr' :'fv',
	'needEncode' :false,
	'defaultValue' :getFlashVersion().toString()
    },
    'sina_ads_refer_page' : {
	'isUrlParam' :true,
	'abbr' :'rp',
	'needEncode' :true,
	'defaultValue' :/*document.referer != null ? document.referer : */document.location
    },
    'sina_ads_page_keyword' : {
	'isUrlParam' :true,
	'abbr' :'pkw',
	'needEncode' :true,
	'defaultValue' :getKeywordsFromMeta()
    },
    'sina_ads_region' : {
	'isUrlParam' :true,
	'abbr' :'prg',
	'needEncode' :true,
	'defaultValue' :null
    },
    'sina_ads_ip' : {
	'isUrlParam' :true,
	'abbr' :'ip',
	'needEncode' :false,
	'defaultValue' :null
    },
    'sina_ads_suitename' : {
	'isUrlParam' :false,
	'abbr' :null,
	'needEncode' :false,
	'defaultValue' :'sina_ads_suite'
    },
    'sina_ads_suite' : {
	'isUrlParam' :false,
	'abbr' :null,
	'needEncode' :false,
	'defaultValue' :null
    },
    'sina_ads_frame_border' : {
	'isUrlParam' :false,
	'abbr' :null,
	'needEncode' :false,
	'defaultValue' :0
    },
    'sina_ads_isdebug' : {
	'isUrlParam' :true,
	'abbr' :'debug',
	'defaultValue' :0
    },
    'sina_ads_outputmode' : {
	'isUrlParam' :false,
	'defaultValue' :'dom'
    }
};

// 将变量转换为字符串
function var2String(value) {
    return value != null ? '' + value + '' : '';
}

// ==============================================================================
// 以下函数可以从一组同name,同类型的标签中提取出一组广告位信息
function getAdParamFromElement(element) {
    var adSection = {};
    for ( var param in sectionParameterInfoMap) {
	if (element.getAttribute(param) != null) {
	    adSection[param] = element.getAttribute(param);
	} else if (sectionParameterInfoMap[param].defaultValue != null) {
	    adSection[param] = sectionParameterInfoMap[param].defaultValue;
	}
    }
    return adSection;
}

function getAdSuite(adSuiteName) {
    var adTagName = 'div';
    if (arguments.length == 2) {
	adTagName = arguments[1];
    }
    var divGroup = document.getElementsByTagName('div');
    var adSuite = [];
    for ( var i = 0; i < divGroup.length; i++) {
	if (divGroup[i].getAttribute('name') == adSuiteName) {
	    adSuite.push(getAdParamFromElement(divGroup[i]));
	}
    }
    if (adSuite.length == 0) {
	return null;
    } else {
	return adSuite;
    }
}

function setObjectDefaultValue(anObject, defValueMap) {
    for ( var param in defValueMap) {
	var defValue = defValueMap[param].defaultValue;
	if (anObject[param] == null && defValue != null) {
	    anObject[param] = defValue;
	}
    }
}

function setDefaultSectionParameter(suite) {
    for ( var i = 0; i < suite.length; i++) {
	setObjectDefaultValue(suite[i], sectionParameterInfoMap);
    }
}

// ==============================================================================
function encodeUrl(strToEncode) {
    if (strToEncode == null) {
	return null;
    }
    if (typeof encodeURIComponent == "function") {
	// 如果有encodeURIComponent使用encodeURIComponent
	return encodeURIComponent(strToEncode);
    } else {
	return escape(strToEncode);
    }
}

// 加入一个url参数
function addAdUrlParameter(adUrlParameters, name, value) {
    if (value != null && value != '') {
	adUrlParameters.push('' + name + '=' + value);
    }
}

// 加入一个url参数
function addEncodeAdUrlParameter(adUrlParameters, name, value) {
    addAdUrlParameter(adUrlParameters, name, encodeUrl(value));
}

function resetParameters(adControler) {
    window[adControler.name] = null;
}

/**
 * 将全局参数加入到url中,如果context中指明了参数,
 * 则使用controler中的,否则使用globalContext中的参数
 */
function addGlobalUrlParameter(urlParameters, context, globalContext) {
    for ( var paramName in globalParameterInfoMap) {
	var paramValue = context[paramName] != null? context[paramName] : globalContext[paramName];
	if (globalParameterInfoMap[paramName].isUrlParam && paramValue != null) {
	    if (globalParameterInfoMap[paramName].needEncode) {
		addEncodeAdUrlParameter(urlParameters,
					globalParameterInfoMap[paramName].abbr,
					paramValue);
	    } else {
		addAdUrlParameter(urlParameters,
				  globalParameterInfoMap[paramName].abbr,
				  paramValue);
	    }
	}
    }
}

/**
 * 将一个广告位的请求参数加入到url中
 */
function addASectionUrlParameter(urlParameters, adSection, sectionIndex) {
    for ( var paramName in adSection) {
	// 如果该参数存在在表中并且需要添加到url中,则添加参数
	if (paramName in sectionParameterInfoMap
	    && sectionParameterInfoMap[paramName].isUrlParam) {
	    // 如果sectionIndex不为null,则在缩写后添加索引
	    var paramAbbr = sectionParameterInfoMap[paramName].abbr;
	    if (sectionIndex != null) {
		paramAbbr += sectionIndex;
	    }
	    if (sectionParameterInfoMap[paramName].needEncode) {
		addEncodeAdUrlParameter(urlParameters, paramAbbr,
					adSection[paramName]);
	    } else {
		addAdUrlParameter(urlParameters, paramAbbr,
				  adSection[paramName]);
	    }
	}
    }
}

function IsHasFeature(feature) // 判断是否包含某个字符串
{
    if (feature in sina_ads_navFeatures) {
	return sina_ads_navFeatures[feature];

⌨️ 快捷键说明

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