Почему интервал Chrome работает в одном файле JS, а не в другом? - PullRequest
1 голос
/ 04 июня 2010

Обновление: исправлена ​​ошибка. Очки за ответ получают те, кто объясняет, почему исправление работает.

Если вы выделите и скопируете текст в первом абзаце на этой странице, а затем вставите его в редактор форматированного текста (dreamweaver или gmail в режиме форматированного текста), вы увидите, что часть текста автоматически связана. В основном это работает:

http://seox.org/link-building-pro.html -> http://seox.org/lbp/old-pretty.js

Я пытаюсь построить вторую версию, но где-то по пути я ее сломал. Если вы выполняете тот же процесс для этого нового URL-адреса, интервалы до и после удаления ссылки в Chrome:

http://seox.org/test.html -> http://seox.org/lbp/lb-core.js

Почему интервал корректно работает в первом, а не во втором? Что еще более важно, как я могу исправить второй, чтобы он не глючил?

Я уже задавал вариант этого вопроса и получил полезный и интересный ответ, но, надеюсь, на этот раз я задал вопрос более подробно. Предыдущий вопрос, на который есть ответ, который мне трудно понять, находится здесь: Javascript: удаляются пробельные символы в Chrome (но не Firefox)

Заранее спасибо за ваше время!


Редактировать: я добавил награду в этот пост, и буду очень признателен за точные инструкции о том, как исправить ошибку (а не за общие рекомендации.

Чтобы лучше проиллюстрировать ошибку, я скопировал серый прямоугольник (со второй страницы) ниже. Обратите внимание, как интервал удаляется до и после тегов a:

Link Building 2 is an amazing tool that helps your website visitors share your content, with proper attribution. It connects to email, social sharing sites, eCommerce sites, and is the<a href="http://seox.org/test.html#seo">SEO</a>'s best friend. Think of it as the sneeze in the viral marketing metaphor.
<div>
  <p id="credit"><br />
    Read more about<a href="http://seox.org/test.html">Text Citations</a>by<a href="http://seox.org">seox.org</a></p>
</div>

Второе обновление:

Мне удалось устранить ошибку, добавив в начало функции processSel () следующее:

    lbp.vrs.holder.style.position = "absolute";

Я предоставлю правильный ответ тому, кто сможет дать лучшее объяснение того, почему это устраняет проблему с пробелами в Chrome.

Ответы [ 4 ]

1 голос
/ 11 июня 2010

У вас есть опечатка в строке 30.

... by <a href='http://" + lbp.page.domain + "' />" + lbp.defaults.author ...
                                                ^ (extra "/" before ">")
0 голосов
/ 12 июня 2010

Это один из нескольких пробелов или, возможно, ошибок макета, открытых в Chrome.

http://code.google.com/p/chromium/issues/list?q=failing+layout+tests

http://code.google.com/p/chromium/issues/list?q=position+absolute

0 голосов
/ 07 июня 2010
    lbp.vrs.holder.style.position = "absolute";

Добавление вышеперечисленного в начало функции processSel () устраняет странные проблемы с расстоянием в Chrome Казалось бы, установка позиции вызывает некое понимание «Я на странице» (или что-то ). Но получите это, «родственник» не работает!


Теперь, когда у нас есть решение ... кто-нибудь хочет попробовать объяснить, почему оно работает таким образом?

0 голосов
/ 06 июня 2010

В строке 30 в вашем файле lb-core.js. Попробуйте это:

lbp.defaults.credit = "<p id='credit'><br/>Read more about&nbsp;<a href='" + lbp.page.url + "'>" + lbp.page.randKeyword + "&nbsp;</a>&nbsp;by&nbsp;<a href='http://" + lbp.page.domain + "' />&nbsp;" + lbp.defaults.author + "&nbsp;</a></p>";

РЕДАКТИРОВАТЬ: Я не могу действительно объяснить, почему Chrome относится к этому так, но если вы спрашиваете, что делает position:absolute;, он удаляет этот элемент из макета блока страницы, поэтому этот элемент не занимает никакого места на странице. Затем он позиционируется с указанными вами координатами, чтобы увидеть, где на странице он фактически размещен. Почему это повлияет на то, что вы видите, я действительно не могу сказать. Я думаю, что вы можете иметь дело с ошибкой в ​​браузере на данный момент? Может быть, что-то с lbp.vrs.holderHider.style.left = "-9999px";, возможно, по какой-то причине проблема отрицательного поля - это проблема, если только элемент не удален из структуры блока с помощью position:absolute

...