2013-12-13 5 views
0

У меня есть страница, которая захватывает эти два файла динамически.Две сторонние JavaScript-библиотеки, именуемые столкновением

  1. http://cdn.dev.skype.com/uri/skype-analytics.js
  2. http://nexus.ensighten.com/somethingelse.js (инструмент отслеживания)

Сейчас Skype имеет следующие строки:

s.trackAction(_t, this); 

К сожалению, инструмент отслеживания JavaScript файл имеет s в качестве объектов и из-за которых s.trackAction недействительно для Skype и разбивает всю страницу.

+0

У любого из этих сценариев есть режим совместимости? –

+0

Вы можете использовать пространство имен. Создайте глобальную переменную и назначьте библиотеки при их загрузке. – A1rPun

+0

@ JustinWood я так не считаю. – premsh

ответ

4

Вы можете сделать следующее:

  1. Загрузите один сценарий.
  2. Сохраните ссылку на s на переменную, скажем first_s.
  3. Загрузить второй скрипт
  4. Сохраните ссылку на s на переменную, допустим, second_s.

Затем установите s в зависимости от того, что вы хотите быть глобальным значением по умолчанию (например, для кода других людей).

Тогда для собственного кода или любой другой код, который вы используете, поместите его внутри этого типа блока:

(function(s) { 
    // any code in here that refers to `s` will see the value of second_s 
})(second_s); 

или

(function(s) { 
    // any code in here that refers to `s` will see the value of first_s 
})(first_s); 

Другой вариант я могу думать заключается в том, чтобы изменить код Skype, чтобы использовать глобальную переменную с именем skype вместо s и включить эту измененную версию на свою страницу.

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

+0

Благодарим за быстрый ответ jfriend00. Я не уверен, как следовать вашему направлению. Оба этих файла загружаются динамически, и я не контролирую эту часть. Кроме того, не существует настраиваемого кода относительно встречной переменной. Поскольку у вас есть доступ к файлу Skype js, не могли бы вы показать мне, как ссылаться на переменную s файла skype на first_s? – premsh

+0

Я боюсь, что второй вариант может не работать, поскольку файл Skype-analytics.js динамически загружается с помощью skype-uri.js и помещается в папку с именем uri, есть ли способ переопределить это, разместив локальную версию? – premsh

+0

@PremShrestha - 'skype-uri.ps' закодирован для загрузки' skype-analytics.js' из Skype CDN. Таким образом, без изменения локальной копии 'skype-uri.ps', чтобы изменить это, он не будет загружать измененный' skype-analytics.js'. – jfriend00

Смежные вопросы