2014-01-23 5 views
1

Мы все знаем, что делает <script src="/something.js"></script>. Этот файл загружается на страницу и запускается сценарий.Изменение поведения браузера по умолчанию для интерпретирующего тега сценария

Есть ли способ переопределить поведение по умолчанию для интерпретации <script> элементов?

Я хочу, чтобы один и тот же синтаксис (<script src='...'></script>), который будет только получить код от something.js (вероятно, через XHR/JQuery AJAX) и передать его в foo (...) {...} функции. Тогда я буду заботиться о том, что я буду с этим делать.

Для выяснения вопроса:

Я могу легко создать альтернативу псевдо <script> тегов с помощью:

<div data-script-src="/1.js"></div> 
<div data-script-src="/2.js"></div> 
<div data-script-src="/3.js"></div> 
<div data-script-src="/4.js"></div> 

, а затем в сторону Js я хотел бы сделать:

var $scripts = $("[data-script-src]") 
    , scriptContents = []; 
(function loadInOrder (i) { 
    if (!$scripts[i]) { alert("Loaded"); } 
    $.ajax($($scripts[i]).attr("data-script-src"), function (data) { 
     scriptContents[i] = data; 
     loadInOrder(++i); 
    }); 
})(0); 

Но как могу ли я заменить div[data-script] на <script>? Как заставить браузер NOT загрузить теги <script>, которые имеют атрибут data-load="false", например?

+0

Не могли бы вы использовать метод JQuery getScript для достижения тех же результатов? http://api.jquery.com/jquery.getscript/ – Askanison4

+0

Я думаю, вы используете его для анализа ... Предположим, что другие сайты :). Может быть, некоторые глубокие настройки браузера? Или загрузите сайт, используя, например, wget, и замените

2

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

Создайте свой собственный PHP-файл, который будет работать как своего рода ворота. Тогда

<?php 
    $file = file_get_contents(your_url); 
    $file = str_replace('<script', '<myscript', $file); 
    $file = str_replace('</script>', '</myscript>', $file); 
    echo $file; 
?> 

И затем, если необходимо добавить свой тип реальных скрипта, который будет искать MyScript тегов и запустить Javascript код ...

Вы можете использовать Div элемент, а также (если скрипты загружен в корпус, и вам необходима проверка):

substitute: '<script' -> '<div data-id="my-script" ' 
substitute: '<script' -> '</div>' 

Если вам нужна дополнительная помощь, напишите. И, пожалуйста, не спускайте вниз, так как вопрос немного затуманивается :).

PS. Я не знаю, являются ли это вашими сайтами или сайтами из Интернета, что вы хотите, чтобы поведение по умолчанию было перезаписано. Поэтому всегда будьте осторожны с тем, что вы «file_getting_contents», потому что это будет отражено непосредственно в вашем браузере ... :).

+0

Я ищу решение для клиентской стороны ... –

+0

Хорошо. Я буду думать больше, может быть, что-то придет в голову :). С наилучшими пожеланиями. –

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