2015-02-20 3 views
-2

Я создаю виджет javascript третьей стороны, который отображает виджет типа движка рекомендации на сайтах хоста. Я успешно развернул свой виджет на 4 веб-сайтах, прежде чем поражать эту странную проблему с этим сайтом. Этот веб-сайт использует float.menu.js для своих кнопок навигации, и этот конкретный скрипт также вызывает мой javascript отдельно от разметки html хоста, поэтому мой виджет получает визуализацию дважды, и он полностью испортил мой стиль. После проверки на консоли в хром-инструментах разработчика он показывает, что скрипт типа VMxx также работает на странице, кроме моего собственного стороннего скрипта. Кто-нибудь знает, как предотвратить этот тип скрипта от взаимодействия с моим сценарием или как мне вообще отлаживать эту проблему. IПроблемы со сторонним javascript

+1

Необходимо указать конкретные детали, мы не можем ответить на такой неопределенный общий вопрос, не видя код. – Barmar

+0

Не могу понять, что эти элитарные высокие указатели голосуют за ответ, иначе как я могу объяснить этот вопрос. Я не думаю, что могу предоставить какой-либо код или смогу имитировать окружающую среду. Идея заключалась в том, что если бы кто-то еще столкнулся с подобной проблемой в прошлом, он мог бы поделиться своими 2 центами, определенно не такими, как я знал, жалкими !! Переезд в redditt или группу google, жалкий !! – ankits

+0

Пожалуйста, зайдите в [Справочный центр] (http://stackoverflow.com/help), чтобы узнать, как задавать хорошие вопросы здесь. Мы не можем читать ваши мысли или гадать, что делает ваш код. – Barmar

ответ

1

1) Вы должны убедиться, что ваш сценарий изолирован от других сценариев, насколько это возможно, используя что-то вроде следующего:

(function() { 

    var myPrivateFunction = function() {...}; 

    var myPublicFunction = function() {...}; 

    window.myWidget = { 
    myPublicFunction: myPublicFunction 
    }; 

}()); 

Используя этот метод, вы имеете полный контроль над которым функции доступны вне вашего скрипта.

2) Если важно, чтобы ваш скрипт выполнялся только один раз, вам необходимо защитить от нескольких вызовов. Посмотрите на «singleton pattern» (Simplest/Cleanest way to implement singleton in JavaScript?) для одного из способов управления этим.

+0

Спасибо, это действительно заставляет меня задуматься о том, чтобы ограничить объем некоторых моих функций и разоблачить только то, что необходимо, чтобы издатель предоставил мой виджет. – ankits