📄 broker.js
字号:
// //
// Copyright 2005 SurveySite. All rights reserved.
// Name: Microsoft-msdn
// Date: 2006-04-03
// Multiple script protection.
if (!window.SiteRecruit_Globals) {
// Create the configuration, globals, and constants namespaces.
var SiteRecruit_Config = new Object();
var SiteRecruit_Globals = new Object();
var SiteRecruit_Constants = new Object();
// Validation variables.
SiteRecruit_Globals.parseFlag = false;
SiteRecruit_Globals.empty = false;
// Browser information.
SiteRecruit_Constants.browser = new Object();
SiteRecruit_Constants.browser.internetExplorer = 'Microsoft Internet Explorer';
SiteRecruit_Constants.browser.mozilla = 'Netscape';
// Check browser information.
SiteRecruit_Globals.browserName = navigator.appName;
SiteRecruit_Globals.browserVersion = parseInt(navigator.appVersion);
// Initialize browser flags.
SiteRecruit_Globals.isInternetExplorer = false;
SiteRecruit_Globals.isMozilla = false;
// Check for Internet Explorer based browsers.
if (SiteRecruit_Globals.browserName == SiteRecruit_Constants.browser.internetExplorer)
{
if (SiteRecruit_Globals.browserVersion > 3)
{
SiteRecruit_Globals.isInternetExplorer = true;
}
}
// Check for Mozilla based browsers.
if (SiteRecruit_Globals.browserName == SiteRecruit_Constants.browser.mozilla)
{
if (SiteRecruit_Globals.browserVersion > 4)
{
SiteRecruit_Globals.isMozilla = true;
}
}
// Cookie lifetime.
SiteRecruit_Constants.cookieLifetimeType = new Object();
SiteRecruit_Constants.cookieLifetimeType.duration = 1;
SiteRecruit_Constants.cookieLifetimeType.expireDate = 2;
// Invitation type.
SiteRecruit_Constants.invitationType = new Object();
SiteRecruit_Constants.invitationType.standard = 0;
SiteRecruit_Constants.invitationType.email = 1;
SiteRecruit_Constants.invitationType.domainDeparture = 2;
// Cookie type flags.
SiteRecruit_Constants.cookieType = new Object();
SiteRecruit_Constants.cookieType.alreadyAsked = 1;
SiteRecruit_Constants.cookieType.inProgress = 2;
// Alignment types.
SiteRecruit_Constants.horizontalAlignment = new Object();
SiteRecruit_Constants.horizontalAlignment.left = 0;
SiteRecruit_Constants.horizontalAlignment.middle = 1;
SiteRecruit_Constants.horizontalAlignment.right = 2;
SiteRecruit_Constants.verticalAlignment = new Object();
SiteRecruit_Constants.verticalAlignment.top = 0;
SiteRecruit_Constants.verticalAlignment.middle = 1;
SiteRecruit_Constants.verticalAlignment.bottom = 2;
// Survey cookie configuration.
SiteRecruit_Config.cookieName = 'msresearch';
SiteRecruit_Config.cookieDomain = '.microsoft.com';
SiteRecruit_Config.cookiePath = '/';
// Cookie element join character.
SiteRecruit_Constants.cookieJoinChar = ':';
// Settings for cookie lifetime.
SiteRecruit_Config.cookieLifetimeType = 1;
// Duration of the cookie in days.
SiteRecruit_Config.cookieDuration = 90;
// //
// Copyright 2005 SurveySite. All rights reserved.
// KeepAlive class definition.
function SiteRecruit_KeepAlive()
{
// Time between page checks.
this.keepAlivePollDelay = 1000;
// Unique (well, sorta) ID for this page.
this.id = Math.random();
// Attach methods.
this.attemptStart = KeepAlive_attemptStart;
this.checkCookie = KeepAlive_checkCookie;
this.inProgressCookieExists = KeepAlive_inProgressCookieExists;
// Start the KeepAlive if an in-progress cookie exists.
function KeepAlive_attemptStart()
{
if (this.inProgressCookieExists())
{
setInterval('SiteRecruit_Globals.keepAlive.checkCookie()', this.keepAlivePollDelay);
}
}
// Check and update the cookie.
function KeepAlive_checkCookie()
{
if (this.inProgressCookieExists())
{
var j = SiteRecruit_Constants.cookieJoinChar;
// Update the cookie with the current time and location.
var c = SiteRecruit_Config.cookieName + '=' + SiteRecruit_Constants.cookieType.inProgress
+ j + escape(document.location)
+ j + (new Date()).getTime()
+ j + this.id
+ '; path=' + SiteRecruit_Config.cookiePath;
if (SiteRecruit_Config.cookieDomain != '')
{
c += '; domain=' + SiteRecruit_Config.cookieDomain;
}
document.cookie = c;
}
}
// Return true if an in-progress cookie exists.
function KeepAlive_inProgressCookieExists()
{
var c = SiteRecruit_Config.cookieName + '=' + SiteRecruit_Constants.cookieType.inProgress;
if (document.cookie.indexOf(c) != -1)
{
return true;
}
return false;
}
}
// Create the KeepAlive if a suitable cookie exists.
SiteRecruit_Globals.keepAlive = new SiteRecruit_KeepAlive();
SiteRecruit_Globals.keepAlive.attemptStart();
// //
// Copyright 2005 SurveySite. All rights reserved.
// Broker class definition.
function SiteRecruit_PageConfigurationBroker()
{
this.urls = new Array();
this.pages = new Array();
this.priorities = new Array();
// Attach methods.
this.start = PageConfigurationBroker_start;
this.initializeMapping = PageConfigurationBroker_initializeMapping;
this.getConfigurationForPage = PageConfigurationBroker_getConfigurationForPage;
this.loadConfiguration = PageConfigurationBroker_loadConfiguration;
// Start the Broker.
function PageConfigurationBroker_start(url)
{
this.initializeMapping();
// Decide if there are surveys to run for this page.
var configuration = this.getConfigurationForPage(url);
// If there is, load id up.
if (configuration != null)
{
this.loadConfiguration(configuration);
}
}
// Initializes the page mapping.
function PageConfigurationBroker_initializeMapping()
{
var u = this.urls;
var p = this.pages;
var x = this.priorities;
// http://msdn.microsoft.com/...
u[0] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/(((?!library).*)|(library/en-us/.*))';
p[0] = '/library/svy/SiteRecruit_PageConfiguration_3089mt-2944mt1.js';
x[0] = 0;
// http://msdn.microsoft.com/chats/chatroom.aspx
u[1] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/chats/chatroom\\.aspx$';
p[1] = '/library/svy/SiteRecruit_PageConfiguration_3056mt-3089mt-2944mt1.js';
x[1] = 1;
// http://msdn.microsoft.com/fr-fr
u[2] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/fr-fr';
p[2] = '/library/svy/SiteRecruit_PageConfiguration_fr-fr.js';
x[2] = 1;
// http://msdn.microsoft.com/practices...
u[3] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/practices(/|$)';
p[3] = '/library/svy/SiteRecruit_PageConfiguration_2692mt-3089mt-2944mt1.js';
x[3] = 1;
// http://msdn.microsoft.com/subscriptions/account
u[4] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/subscriptions/account';
p[4] = '/library/svy/SiteRecruit_PageConfiguration_2641mt-blank.js';
x[4] = 1;
// http://msdn.microsoft.com/vstudio/difference
u[5] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/vstudio/difference((/)|(/((default)|(index))\\.((html?)|(aspx?)|(mspx))))?$';
p[5] = '/library/svy/SiteRecruit_PageConfiguration_3194mt-natural.js';
x[5] = 1;
// http://msdn.microsoft.com/vstudio/difference/?source=game
u[6] = '//((msdn\\.)|(internetbuild34)|(sr-msdn-microsoft\\.))[\\w\\.-]*/vstudio/difference/\\?source=game';
p[6] = '/library/svy/SiteRecruit_PageConfiguration_3194mt-game.js';
x[6] = 1;
}
// Return the appropriate configuration for the given URL, if any.
function PageConfigurationBroker_getConfigurationForPage(url)
{
var currentScore = 0;
var currentMatch = -1;
// Iterate over each URL.
for (var i = 0; i < this.urls.length; i++)
{
// Do the reg exp match.
var r = new RegExp(this.urls[i], 'i');
if (url.toString().search(r) != -1)
{
// Take the current if the score is equal or better.
var newScore = this.priorities[i];
if (newScore >= currentScore)
{
currentMatch = i;
currentScore = newScore;
}
}
}
// If there was a match, return the appropriate page configuration.
var page = null;
if (currentMatch >= 0)
{
page = this.pages[currentMatch];
}
return page;
}
// Dynamically loads the associated configuration.
function PageConfigurationBroker_loadConfiguration(configuration)
{
document.write('<script language="JavaScript" src="' + configuration + '"></script>');
}
}
try
{
// Only run if the browser is supported.
if (SiteRecruit_Globals.isInternetExplorer || SiteRecruit_Globals.isMozilla)
{
// Create and start the Broker for the current location.
SiteRecruit_Globals.broker = new SiteRecruit_PageConfigurationBroker();
SiteRecruit_Globals.broker.start(window.location);
}
}
catch (e)
{
// Suppress any errors.
}
SiteRecruit_Globals.parseFlag = true;
// Multiple script protection.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -