Ящик Rust-PHF предоставляет структуры данных времени компиляции, включая (упорядоченные) карты и наборы.
К сожалению, на сегодняшний день он не поддерживает инициализацию набора std::net::IpAddr
, но может использоваться со статическими строками:
static IP_SET: phf::Set<&'static str> = phf_set! {
"127.0.0.1",
"::1",
};
Программирование на стороне сервера было бы проще, я думаю, но я нашел в это некоторое время тому назад. Обратите внимание, что он специально устанавливает его для заголовка html
.
Также проверьте первую ссылку внизу «Добавление Javascript через Ajax».
Попробуйте использовать точный код JavaScript, предоставленный Google, а затем условно отобразите этот фрагмент кода на основе конструкции в вашей структуре пользовательского интерфейса. Вы не сказали, на какой платформе это работает, если это ASP.NET, вы можете поместить код в PlaceHolder или UserControl, а затем установить для Visible значение true или false в зависимости от настройки файла конфигурации, если сценарий должен быть включен. Я использовал этот подход на нескольких сайтах, чтобы предотвратить включение сценария Google Analytics в предварительную среду.
Я буквально только что собрал что-то, что делает это ... используя jquery. Хитрость заключается в том, чтобы добавить событие загрузки к тегу скрипта с кодом отслеживания в нем.
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
var gaScript = document.createElement('script');
var loaded = false;
gaScript.src = gaJsHost + "google-analytics.com/ga.js";
$(gaScript).load(function(){
loaded = true;
var pageTracker = _gat._getTracker(Consts.google_analytics_uacct);
pageTracker._initData();
pageTracker._trackPageview();
});
document.body.appendChild(gaScript);
// And to make it work in ie7 & 8
gaInterval = setInterval(function() {
if (!loaded && typeof _gat != 'undefined') {
$(gaScript).load();
clearInterval(gaInterval);
}
},50);
Я пытаюсь разобраться ... разрешено ли это в Google.
function loadGA() { if(typeof _gat == 'function') //already loaded { //innitGA(); // you may want the above line uncommented.. // I'm presuming that if the _gat object is there // you wouldn't want to. return; } var hostname = 'google-analytics.com'; var protocol = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); js = document.createElement('script'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', protocol+hostname+'/ga.js'); document.body.appendChild(js); //2 methods to detect the load of ga.js //some browsers use both, however loaded = false; // so use a boolean js.onreadystatechange = function () { if (js.readyState == 'loaded') { if(!loaded) { innitGA(); } loaded = true; } }; js.onload = function () { if(!loaded) { innitGA(); } loaded = true; }; } function innitGA() { //var pageTracker = _gat._getTracker('GA_ACCOUNT/PROFILE_ID'); //pageTracker._initData(); //pageTracker._trackPageview(); alert('oh hai I can watch plz?'); }
просто вызовите loadGA () ... проверено в IE6 / 7/8, FF3, Chrome и Opera
извините, если я немного опоздал на эту вечеринку.