2009-10-22 2 views
0

У меня относительно большая (с точки зрения использования памяти и размера кода) функция JS (работающая в IE/FF), которую я использую только время от времени (например, пару раз в день). Я думаю, что я могу избавиться от него, когда покончу с этим, исключив его функцию (используя имя переменной «объект функции», как бы).Функция JavaScript Загрузка

Я неясен, хотя на то, как я верну его, предположим, что, возможно, через некоторое время я захотел сделать это снова. Как я могу загрузить JS «на лету» с URL-адреса, как это делает тег «script»?

Имеет ли смысл целый ряд рассуждений?

+0

Прошли ли какие-либо профилирования? Вы абсолютно уверены, что ваша функция действительно занимает значительную часть памяти или вы, возможно, пытаетесь решить проблему без проблем? –

ответ

0

Это немного Hacky, но есть два способа:

методы использования DOM для вставки сценария тег на страницу в файл, который имеет эту функцию в нем. Возможно, вам потребуется добавить строку запроса, чтобы она подумала, что это новый файл javascript (например, function.js? (Случайное число))

Используйте AJAX для загрузки файла с функцией и eval(); it

+0

Для любви ко всему хорошему, не 'eval' это. Что делать, если скрипт неожиданно 404 и возвращает страницу с ошибкой с некоторым JavaScript? Ожидайте загрузки ошибок и неприятных уязвимостей XSS, чтобы следовать, если вы используете этот маршрут ... –

0

Единственный реальный способ сделать это - вставить элемент сценария в документ динамически с помощью JavaScript с ссылкой на файл сценария, содержащий вашу функцию, в результате чего скрипт будет загружен. Одно предостережение: вы должны убедиться, что имя файла имеет время, добавленное как строка запроса, в противном случае кеш недружественных браузеров, таких как Internet Explorer, не перезагрузит сценарий еще раз.

0

Как и многие другие, лучше всего идти вперед и вставлять новый тег сценария на страницу с каким-то параметром запроса, чтобы избежать проблем с кешированием. Если вы используете JS-библиотеку, этот метод на самом деле называется «JSONP»; В частности, у jQuery есть хороший метод для этого, который дает вам простой способ подключения функции обратного вызова и т. д. Если вы пишете свою собственную версию, вам нужно будет посмотреть, как readistate нового узла сценария узнает, когда он загружен.

Сказали, что мне интересно, и кому бы то ни было, пожалуйста, исправьте меня, если я ошибаюсь - почему бы не использовать ключевое слово «удалить», чтобы убить вашу функцию, а не обнулить ее? Что-то вроде ...

function myFunction() { return; } 

Тогда ...

delete myFunction; 

Кажется, более эффективным способом очистки вещи вверх, по крайней мере, с моей точки зрения.

+0

delete myFunction оставляет функцию неповрежденной. Попытка удалить его возвращает false, то есть функция Object не может быть удалена таким образом. – KooiInc

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