Исправлено положение фона в IE

== тесты для ссылочного равенства (независимо от того, являются ли они одним и тем же объектом).

.equals() тесты для равенства значений (независимо от того, являются ли они логически «равными»).

Objects.equals () проверяет наличие null перед вызовом .equals(), поэтому вам не нужно (доступно с JDK7, также доступным в Guava ).

String.contentEquals () сравнивает содержимое String с содержимым любого CharSequence (доступно с Java 1.5).

Следовательно, если вы хотите проверить, имеет ли две строки одно и то же значение, вы, вероятно, захотите использовать Objects.equals().

// These two have the same value
new String("test").equals("test") // --> true 

// ... but they are not the same object
new String("test") == "test" // --> false 

// ... neither are these
new String("test") == new String("test") // --> false 

// ... but these are because literals are interned by 
// the compiler and thus refer to the same object
"test" == "test" // --> true 

// ... string literals are concatenated by the compiler
// and the results are interned.
"test" == "te" + "st" // --> true

// ... but you should really just call Objects.equals()
Objects.equals("test", new String("test")) // --> true
Objects.equals(null, "test") // --> false
Objects.equals(null, null) // --> true

Вы почти всегда хотите использовать Objects.equals(). В редкой ситуации, когда вы знаете, что имеете дело с интернированными строками, вы можете использовать ==.

Из JLS 3.10. 5. Строковые литералы :

Кроме того, строковый литерал всегда ссылается на тот же экземпляр класса String. Это связано с тем, что строковые литералы, или, в более общем смысле, строки, которые являются значениями константных выражений ( §15.28 ), «интернированы», чтобы обмениваться уникальными экземплярами, используя метод String.intern.

blockquote>

. Подобные примеры также можно найти в JLS 3.10.5-1 .

13
задан BoltClock 30 January 2012 в 08:42
поделиться

6 ответов

Немного больше рытья о в межсети показало ответ: IE не понимает селектор background-position. Это понимает нестандартное background-position-x и background-position-y.

В настоящее время взламывание чего-то вместе к обходному решению это.

Хороший, Редмонд.

34
ответ дан kiamlaluno 30 January 2012 в 19:42
поделиться

попробуйте backgroundPosition istead

кроме того, удостоверьтесь, что 'это' существует и что Ваш запрос на атрибут возвращает значение. IE бросит этот вид ошибок, когда Вы попытаетесь назвать метод на свойстве, которое не существует, поэтому bg является пустым, или аннулируйте объект. если Вы не заботитесь о IE, можно сделать bg = $ (это)... || '' так, чтобы всегда было что-то ссылаемое.

кроме того, не связанный с ошибкой Вы добираетесь, но Ваше индексное значение 1 корректного? Вы имели в виду-1?

0
ответ дан 30 January 2012 в 19:42
поделиться
  • 1
    It' s стоящий замечания тот itertools.izip() doesn' t существуют в Python 3.x, и zip() встроенный дает итератор, так, чтобы была общедоступная замена. Также обратите внимание, что, если у Вас есть список списков, можно использовать оператор (zip(*lists)) распаковки. Это - лучший дизайн, чем наличие переменных l1, l2, и т.д... – Gareth Latty 17 July 2013 в 15:47

Можно хотеть проверить, чтобы удостовериться, что Вы загружаете свои js файлы в правильном порядке так, чтобы любые зависимости были приняты во внимание.

2
ответ дан jonstjohn 30 January 2012 в 19:42
поделиться

Однако строка 33 является пустой строкой.

Это будет строка 33 из одного из Ваших .js файлов, не строка 33 из самого HTML. IE не удается сообщить, в каком фактическом файле ошибка была. Взгляд на строку 33 из каждого .js для чего-то о ‘bg’; в самом худшем случае можно начать вставлять новые строки в начале каждого .js и видеть, изменяется ли номер строки.

я проверяю, что источник имеет обновление через источник представления, но я чувствую, что это могло лгать мне.

источник Представления будет всегда показывать Вам что IE, полученный от сервера. Это не покажет обновлений DOM.

1
ответ дан bobince 30 January 2012 в 19:42
поделиться

Немного взглядов (и чашка чая) позже я придумал:

if(bg == 'undefined' || bg == null){
    bg = $(this).css('background-position-x') + " " + $(this).css('background-position-y');
}

, К сожалению, это возвращает центральный центр несмотря на ресурсы онлайн, я могу найти состояние, которое это должно возвратить 0 0, если значения не определены.

Начало задаться вопросом, существует ли фактическая фиксация/обходное решение к этому. Много людей попробовало, и всем до сих пор не удается поймать все пограничные случаи.

версия Camel-регистра backgroundPosition кажется жизнеспособной, но я не знаю, что достаточно jQuery делает точную оценку того, как пойти об этом - от того, что я считал, можно только использовать Camel-регистр в качестве методов get, если свойство было установлено ранее. Скажите мне, если я ошибаюсь.

2
ответ дан graham.reeds 30 January 2012 в 19:42
поделиться

У меня это сработало:

    if (navigator.appName=='Microsoft Internet Explorer')
   {
    bg = $(drag_div).css('backgroundPositionX') + " " + $(drag_div).css('backgroundPositionY');
   }
   else
   {
    bg = $(drag_div).css('background-position');
   }

надеюсь, что это поможет вам.

3
ответ дан 1 December 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: