📄 getace.js
字号:
/**
* 本代码用来
* 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 + -