Впервые пишу собственный плагин для jQuery и тут возник вопрос. Вместе с будущем плагином идут картинки, на которые нужно ссылаться внутри самого плагина. Как получить и сформировать такую ссылку, чтобы не зависимо от того откуда запускается плагин, картинки были найдены?
Например, структура папок следующая:
plugins
----myPlugin
--------img
------------image.png
--------myPlugin.js
--------example.html
www
----index.html
Так вот, если в плагине задана строка ссылки "img/image.png" или "./img/image.png", то в example.html все работает, а в index.html уже не работает. Не хотелось бы каждый раз в плагин передавать ссылку.
Самый корректный способ использовать document.currentScript и из src вырезать имя самого скрипта, чтобы осталась лишь папка, но это свойство (currentScript) отсутствует в IE. Более кроссбраузерный подход - получать массив элементов script и брать последний. Здесь недостаток в том, что ваш скрипт будет последним в массиве только если он подключен в html. Любая асинхронная загрузка уже не гарантирует порядок.
Знаю про эти способы и пока меня останавливало их использование указанные вами ограничения. Думал, может есть универсальный способ, о котором я еще не знаю.
Тимур Евгажуков: Можете использовать все варианты вместе. Если есть currentScript, то его. Нет - проверяете document.readyState. Если DOM ещё грузится берём последний тег script. Если уже загрузился берём строку переданную пользователем, если не передана - выбрасываем ошибку. К сожалению, исходя из моих знаний, это лучший вариант.
В моем случае, если я правильно понимаю, через css не получится, т.к. мне эту ссылку нужно передавать в api yandex map (ссылка на файл с иконкой, которая будет проставляться на карте)
Дмитрий Иванейчик: такую возможность я, естественно, дал, но все же хотелось бы, чтобы у пользователя была возможность оставлять стандартную картинку иконки просто не задавая этот параметр.