var full = window.location.host
//window.location.host is subdomain.domain.com
var parts = full.split('.')
var sub = parts[0]
var domain = parts[1]
var type = parts[2]
//sub is 'subdomain', 'domain', type is 'com'
var newUrl = 'http://' + domain + '.' + type + '/your/other/path/' + subDomain
window.open(newUrl);
Причина, по которой эти выражения CSS не работают, заключается в том, что IE оценивает выражение только для последнего свойства в каскаде.
Например, если у вас есть HTML-документ со ссылкой внутри него и следующим «CSS»,
a {
color: expression(function(e){
alert('success');
e.runtimeStyle.color = 'blue';
}(this));
}
a { color: red; }
вы будете никогда не видеть это предупреждение (не говоря уже об изменении стиля), потому что выражение CSS никогда не вычисляется. Так что нет, ты можешь ' • Используйте выражение для установки флага ! important
.
То есть не тогда, когда вы пытаетесь установить его для того же свойства. Можно обмануть. Но это немного усложняет выражение:
a {
filter: expression(function(e){
e.runtimeStyle.color = 'blue';
alert('success');
e.style.filter = '';
}(this));
}
a { color: red; }
Здесь следует отметить несколько моментов.
Если вы просто используете другое свойство CSS, вы можете быть уверены, что выражение будет вычислено . Или, по крайней мере, немного более уверенно, потому что, если есть еще одно правило ниже по каскаду, которое уже использует то же свойство, вам все равно не повезло.
Во-вторых, вы должны использовать вместо этого runtimeStyle
из currentStyle
. Если вы использовали здесь currentStyle
, второе правило все равно бы перезаписало его. runtimeStyle
переопределяет все остальные CSS ( кроме ! Important
объявлений ). Так что' s эквивалент JScript ! important
.
Также обратите внимание, что я также сбрасываю само свойство filter
. Это предотвращает постоянную повторную оценку выражения. Но насколько это может снизить производительность, я не думаю, что это критично. Основная причина, по которой я поместил это здесь, заключается в том, что я добавил в эти выражения alert ()
, а вы определенно не хотите, чтобы они всплывали вечно.
Это фактически также можно использовать любое другое свойство, которое вы создаете. Это тоже работает:
a {
bogus: expression(function(e){
e.runtimeStyle.color = 'blue';
}(this));
}
Однако, поскольку свойство фиктивного
на самом деле не существует, вы не можете сбросить его с помощью Javascript, поэтому это будет постоянно переоцениваться.
. Это предотвращает постоянную повторную оценку выражения. Но насколько это может снизить производительность, я не думаю, что это критично. Основная причина, по которой я поместил это здесь, заключается в том, что я добавил в эти выражения alert ()
, а вы определенно не хотите, чтобы они всплывали вечно.
Это фактически также можно использовать любое другое свойство, которое вы создаете. Это тоже работает:
a {
bogus: expression(function(e){
e.runtimeStyle.color = 'blue';
}(this));
}
Однако, поскольку свойство фиктивного
на самом деле не существует, вы не можете сбросить его с помощью Javascript, поэтому это будет постоянно переоцениваться.
. Это предотвращает постоянную повторную оценку выражения. Но насколько это может снизить производительность, я не думаю, что это критично. Основная причина, по которой я поместил его здесь, заключается в том, что я добавил в эти выражения alert ()
, а вы определенно не хотите, чтобы они всплывали вечно.
Это фактически также можно использовать любое другое свойство, которое вы создаете. Это тоже работает:
a {
bogus: expression(function(e){
e.runtimeStyle.color = 'blue';
}(this));
}
Однако, поскольку свойство фиктивного
на самом деле не существует, вы не можете сбросить его с помощью Javascript, поэтому это будет постоянно переоцениваться.
alert ()
, а вы определенно не хотите, чтобы они всплывали вечно.
Это фактически также можно использовать любое другое свойство, которое вы создаете. Это тоже работает:
a {
bogus: expression(function(e){
e.runtimeStyle.color = 'blue';
}(this));
}
Однако, поскольку свойство фиктивного
на самом деле не существует, вы не можете сбросить его с помощью Javascript, поэтому это будет постоянно переоцениваться.
alert ()
, а вы определенно не хотите, чтобы они всплывали вечно.
Это фактически также можно использовать любое другое свойство, которое вы создаете. Это тоже работает:
a {
bogus: expression(function(e){
e.runtimeStyle.color = 'blue';
}(this));
}
Однако, поскольку свойство фиктивного
на самом деле не существует, вы не можете сбросить его с помощью Javascript, поэтому это будет постоянно переоцениваться.
Насколько я понимаю,! Important - это в основном эти дней как хакерство ... именно потому, что IE НЕ распознает его.
Звучит больно и злобно, но:
color: expression((function (_this) {
window.setTimeout(function () {
_this.setAttribute("style", "color:" +
(_this.parentNode.currentStyle ?
_this.parentNode.currentStyle.color : 'red') + " !important";
}, 0);
return _this.parentNode.currentStyle ?
_this.parentNode.currentStyle.color : 'red';
})(this));
Другими словами, это:
«красный»
(или родительский цвет). «красный! Важный»
(или что-то еще) сразу после. Имейте в виду, что это может привести к закрытию вашего браузера. Я не тестировал его, и все, что связано с выражениями CSS, имеет тенденцию к ужасным ошибкам.
Достопочтенный ppk из quirksmode проделал некоторую работу над CSS, JavaScript и ключевым словом ! Important
. (Обратите внимание, что для тестирования в Firefox или любых других браузерах, отличных от IE, используйте cssRules
вместо правил
ниже.
Вот ссылка: Совместимость с W3C DOM
Очевидно, вы можете прочитать, важно ли правило стиля в таблице стилей, сделав это (это даст уровень важности свойства цвета во втором правиле CSS во второй таблице стилей, ВО ВСЕХ БРАУЗЕРАХ, ЗА ИСКЛЮЧЕНИЕМ MICROSOFT INTERNET EXPLORER. ] Как это для облома.
document.styleSheets[1].rules[1].style.getPropertyPriority('color')
//Returns important when the style is marked !important.
//Returns an empty string otherwise.
Теперь его исследование показывает еще один способ установить ! Important
, к сожалению, это также очевидно работает только в браузерах, отличных от Internet Explorer.
// where x is a DOM element
x.style.setProperty('color','#00cc00','!important');
// Set the color of x or the second rule in the second style sheet to green.
document.styleSheets[1].rules[1].style.setProperty('color','#00cc00','!important');
Очевидно, этот странный синтаксис, если вы не устанавливаете значения ! important
, необходимо установить третий параметр на null
:
// where x is a DOM element
x.style.setProperty('color','#00cc00',null);
// Set the color of x or the second rule in the second style sheet to green.
document.styleSheets[1].rules[1].style.setProperty('color','#00cc00',null);
Теперь в MSDN есть свойство под названием « cssText
», которое свисает с объекта стиля
элемента DOM. Это даже указывает на то, что выражения CSS в порядке. Используется следующее:
x.style.cssText = 'color: #00cc00 !important';
Теперь это может быть важно (хех), на странице MSDN говорится (выделено мной):
Выражения DHTML могут использоваться вместо предыдущего значения (значений). Как Internet Explorer 8, выражения не поддерживаются в режиме IE8. За дополнительную информацию см. О динамическом Свойства .
Возможно, стоит также проверить ppk тесты cssText .
К сожалению, у меня нет соответствующих версий Windows Microsoft Internet Explorer, доступных на этом ноутбуке, но, возможно, это будет полезно. Мне любопытно, как это встряхивает, с этим я столкнулся (установка ! Important
в JavaScript), но нашел другие способы обойти это, обычно просто перемещая классы или применяя специфичность с помощью ID в соответствующих селекторах.
Удачи в интересном вопросе!
Интерфейс IEqualityComparer
имеет эти два метода:
bool Equals(T x, T y);
int GetHashCode(T obj);
Таким образом, хорошая реализация этого интерфейса будет реализовывать оба.
body #div1 {
color:blue;
}
#div1 {
color:red;/*stays blue, because 'body #div1' is more specific*/
behaviorProp:color;/*specify styleproperty for the .htc*/
behaviorValue:green;/*WILL become green, because the .htc sets it as an inline style, which has priority.*/
behavior:url(inherit.htc);
}