Jump to content
  • 0

Не совместимость библиотек


BELkoo
 Share

Question

Здравствуйте

Столкнулся с проблемой совместимости библиотек jquery.

http://77.120.124.163/js/index.html

На странице My Production используется скрипт jsPlumb для прорисовки соединителей между объектами. Он использует библиотеку jquery.min.1.7.1.js и http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js

На этой же странице подключена библиотека jquery.tools.min.js, которая используется для попапов при клике на кнопки Add, Edit и для попапов с хинтами, возникающими при наведении на пункты меню (My Production, Configuration). Вместе эти библиотеки не работают. В итоге работает либо jsPlumb, либо попапы.

В библиотеке jquery.min.1.7.1.js функций, которые используются для этих попапов, нет.

Пробовал добиться совместимости, юзая jquery.noConflict. Не помогло.

Пробовал это:

<script type='text/javascript' src='js/jquery.min.1.7.1.js'></script>

<script type="text/javascript">

MyjQuery123(document).ready(function() { }

</script>

<script type='text/javascript' src='js/jquery.tools.min.js'></script>

Частично помогло: передвижение объекта в jsPlumb заработало, но прорисовка соединителей - нет. Видимо, начала работать jquery-ui.min.js, т.к. она отвечает за передвижение.

Большая просьба помочь.

P.S.: грузить страницу с jsPlumb в отдельном окне/вкладке - не вариант.

P.P.S.: аналоги jsPlumb находил (например, dracula_graffle.js, с ним проблем не было), но требуется использовать именно jsPlumb.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Мне кажется должно работать так:


<script src="js/jquery.min.1.7.1.js"></script>
<script>
var JQ = $; // локальная копия jQuery
</script>
<script src="js/путь_к_другой_библиотеке.js"></script>

Ну и дальше юзаем JQ вместо $.

Link to comment
Share on other sites

  • 0
Вместе эти библиотеки не работают.

открыть отладчик, исправить ошибки, не?

Мне кажется должно работать так:

не понял, зачем это. Если имя $ не доступно, можно использовать jQuery. Поскольку объекты передаются по ссылке, то

<script>
var JQ = $; // локальная копия jQuery
</script>

не вариант, т.к. это не копия, а ссылка (к тому же глобальная). А вообще, у меня еще утро, не догоняю :lol:

Edited by nerv
Link to comment
Share on other sites

  • 0

jquery.tools.min.js подключенная на вашей странице уже содержит в себе jQuery v1.4.2.

И вы тут же подключаете jquery.min.1.7.1.js

Получая этим самым на одной странице две версии одного и того же фреймворка.

Обновите jquery.tools до последней версии 1.2.7 она использует jquery v1.7.2.

Вообще у вас два варианта решения:

1) подключить jquery.tools с уже добавленной jquery по ссылке выше и не подключать отдельно jquery

2) подключить jquery.tools без jquery по ссылке выше и подключить отдельно jquery

Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0
Разве в JS есть ссылки?

О_О

цитата из Фленагана

Главное правило JavaScript заключается в следующем: операции над элементарными типами производятся по значению, а над ссылочными типами, как и следует из их названия, – по ссылке. Числа и логические величины – это элементарные типы в JavaScript. Элементарные потому, что состоят из небольшого и фиксированного числа байтов, операции над которыми с легкостью выполняются низкоуровневым интерпретатором JavaScript. Представителями ссылочных типов являются объекты. Массивы и функции – это специализированные типы объектов и потому также являются ссылочными типами. Эти типы данных могут состоять из произвольного числа свойств или элементов, поэтому оперировать ими не так просто, как значениями элементарных типов, имеющими фиксированные размеры. Поскольку размеры массивов и объектов могут быть чрезвычайно велики, операции по значению над ними могут привести к неоправданному копированию и сравнению гигантских объемов памяти.

var arr = [];
var link = arr;

link.push( 1 );

alert( link.length );
alert( arr.length )

Кстати, вышла новая версия jQuery 1.8.2 :lol:

Там в коде написано

// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;

Т.е., если удалить ссылку $, то ничего не случиться, да. Если изменить сам объект, то изменения будут видны и по другой ссылке.

Edited by nerv
Link to comment
Share on other sites

  • 0
не вариант, т.к. это не копия, а ссылка (к тому же глобальная)

Разве в JS есть ссылки? Если изменить $, то c JQ ничего не стучится.


var a = 1;
var b = 2;
a = b;
b++;

console.log(a); // 2

Ссылки есть. По сути вся работа с объектами в JS это и есть система ссылок.


var link1 = { test: "test" };
var link2 = link1;

console.log(link1.test); // test
console.log(link2.test); // test
link1.test = "test2";
console.log(link1.test); // test2
console.log(link2.test); // test2

или пример с функцией, которая по сути тоже является объектом, и b тут вовсе не функция, а ссылка на него:


var a = 1;
var b = function(val){ // или можно написать "function b(val){" без разницы
if(val != undefined)
this.data = val;
else
return this.data;
};
b(1);
a = b;
b(2);

console.log(a()); // 2

Link to comment
Share on other sites

  • 0

Точняк, я об этом и не знал кстати :)

window.jQuery = window.$ = jQuery;

Эта запись написана в jQuery хрен знает с какой версии, если вообще не с самого начала (в версии 1.3 точно была).

Link to comment
Share on other sites

  • 0

Вообще у вас два варианта решения:

1) подключить jquery.tools с уже добавленной jquery по ссылке выше и не подключать отдельно jquery

2) подключить jquery.tools без jquery по ссылке выше и подключить отдельно jquery

Спасибо за решения но не помогло с одной библиотекой не работает не попапы не jsPlumb. З двумя также....

Подскажите еще вариант плз

Link to comment
Share on other sites

  • 0

хм подключил отдельно jquery и отдельно jquery.tools у меня пример из демо работает. Вы что-то делаете не верно явно.

Да и вообще смотрю у вас на странице подключено куча плагинов. Проверьте версии плагинов и какую версию jquery они требуют , если какие-то используют старую версию проверьте есть ли более новая версия этого плагина. А подключать 2 версии одного фреймворка это делается только в крайнем случае, если зависимого кода очень много, плюс обычно более новые версии имеют обратную совместимость и проблем со старым кодом в большинстве случаев быть не должно.

Link to comment
Share on other sites

  • 0

хм подключил отдельно jquery и отдельно jquery.tools у меня пример из демо работает. Вы что-то делаете не верно явно.

Да и вообще смотрю у вас на странице подключено куча плагинов. Проверьте версии плагинов и какую версию jquery они требуют , если какие-то используют старую версию проверьте есть ли более новая версия этого плагина. А подключать 2 версии одного фреймворка это делается только в крайнем случае, если зависимого кода очень много, плюс обычно более новые версии имеют обратную совместимость и проблем со старым кодом в большинстве случаев быть не должно.

Уточни пожалуйста как ты сделал (с дедалями), для меня это очень важно, у меня начальный уровень....

Link to comment
Share on other sites

  • 0

подключаешь по порядку:

1. http://code.jquery.com/jquery.min.js - сама jQuery версия 1.8.2

2. http://code.jquery.com/ui/1.8.23/jquery-ui.min.js - jQueryUI версия 1.8.23

3. http://cdn.jquerytools.org/1.2.7/all/jquery.tools.min.js - плагин jquery.tools версия 1.2.7

4. http://code.google.com/p/jsplumb/downloads/detail?name=jquery.jsPlumb-1.3.15-all-min.js - плагин jquery.jsPlumb версия 1.3.15

5. другие плагины

6. свои скрипты использующие подключенные выше библиотеки и плагины к ним.

Я указал ссылки на актуальные версии фреймворка и плагинов все они должны работать друг с другом. Единственное jquery.tools на оф.сайте написано что использует jquery 1.7.2 вчера проверял и не заметил проблем её работы с 1.8.2

Edited by wwt
Link to comment
Share on other sites

  • 0

подключаешь по порядку:

1. http://code.jquery.com/jquery.min.js - сама jQuery версия 1.8.2

2. http://code.jquery.com/ui/1.8.23/jquery-ui.min.js - jQueryUI версия 1.8.23

3. http://cdn.jquerytools.org/1.2.7/all/jquery.tools.min.js - плагин jquery.tools версия 1.2.7

4. http://code.google.com/p/jsplumb/downloads/detail?name=jquery.jsPlumb-1.3.15-all-min.js - плагин jquery.jsPlumb версия 1.3.15

5. другие плагины

6. свои скрипты использующие подключенные выше библиотеки и плагины к ним.

Я указал ссылки на актуальные версии фреймворка и плагинов все они должны работать друг с другом. Единственное jquery.tools на оф.сайте написано что использует jquery 1.7.2 вчера проверял и не заметил проблем её работы с 1.8.2

Заработало УРАА спасибо.....

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy