Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Два файла, две функции, но с одним именем (https://javascript.ru/forum/misc/34892-dva-fajjla-dve-funkcii-no-s-odnim-imenem.html)

Janom 23.01.2013 14:39

Два файла, две функции, но с одним именем
 
Здравствуйте... Ситуация:
Есть стороннее приложение (на Delphi) оно генерирует файлы .JS, все файлы однотипные, в каждом по две функции предположим Func1 и Func2 и имена у этих функций одинаковые во всех файлах, а возвращают они разные значения, т.к. в каждом файле определен массив с уникальными элементами т.е. массив называется Arr1 во всех файлах, а элементы массива во всех файлах разные... Мне необходимо сделать так, что бы массивы из файлов выводились последовательно, нечто вроде:
<br>
<h1>Arr1 in File1.JS:</h1>*Значение массива из первого файла*
<br>
<h1>Arr1 in File2.JS:</h1>*Значение массива из второго файла*
Так собственно вопрос как обратиться к функции в конкретном файле?
P.S. на JS пишу около трех дней, всегда работал с C++ и Delphi

Deff 23.01.2013 14:47

Janom,
1.Функция исполняется при загрузке файла?
2. Не проще ли сменить имена функций на разные ?(тогда можно сразу загрузить оба файла или объединить в один

Janom 23.01.2013 15:22

1. Нет функцию нужно выполнить по клику...
2. Тоже нет, файлов может быть и не два и не три, а целая тонна...
Бошка уже гудит, не верю что нельзя что-то придумать, в том же делфи это делается без проблем, думаю и тут есть кокой-то способ...

Deff 23.01.2013 15:35

Janom,
Можно
скрипта будет четыре
1. Подгружает первый файл
2. и выполняет функцию
3. Подгружает второй файл
4. и выполняет функцию


Или
1. Подгружает первый файл
2. и Переименовывает функции добавляя +'_1' к имени
3. Подгружает второй файл
4. и Переименовывает функции добавляя +'_2' к имени
И выполняет обе функции

Janom 23.01.2013 15:42

можно пример как реализовать?

Deff 23.01.2013 15:59

<div id="SavScript"></div>
<script type="text/javascript">
var src="http://code.jquery.com/jquery-latest.js";
var a=document.createElement('script');
a.setAttribute('src',src)
document.getElementById('SavScript').appendChild(a);
</script>

<script type="text/javascript">
alert('Загрузили и выполнили\n'+$("#SavScript").html());//Исполняем функции файл 1;
</script>

<script type="text/javascript">
var src="Тут ссылка на файл2";
var a=document.createElement('script');
a.setAttribute('src',src)
document.getElementById('SavScript').appendChild(a);
</script>

<script type="text/javascript">
//Тут Исполняем функции файл 2;
</script>

Janom 24.01.2013 10:26

Спасибо, принцип понял... Вот только все равно не догоню, а как заставить это работать за один клик по кнопке? Что бы все файлы и нужные скрипты обработались и выдали результат на страницу?
Пробовал провернуть это все в цикле, но не тут-то было...

Deff 24.01.2013 11:23

Janom,
Cделать можно всё, но имхо организация кода свидетельсвует о желании избежать переделок исходников, и делать небоскрёб ради иходного Г - не айс. Проще добавить "2" ко всем именам функций во втором файле'

Тогда загружать оба файла и вызывать все нужные функции по кнопке из обоих файлов

Janom 24.01.2013 11:25

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

Deff 24.01.2013 11:30

Janom,
Делать разные функции, имя функции связать с именем файла, (тупо добавлять имя или изменяемую часть
Это как "два пальца" на РНР отправляющим файл, если есть проблемы это сделать при создании файла

Janom 24.01.2013 11:31

так я этого и добиваюсь, просто не знаю как это сделать) может примерчик покажете?

Deff 24.01.2013 11:34

Janom,
В раздел PHP напишите

Janom 24.01.2013 11:36

понял, спасибо)

Janom 31.01.2013 08:34

Здравствуйте, уважаемые) Вообщем проблему смог решить небольшой сменой концепции и библиотекой http://scriptjava.net/source/scriptjava/scriptjava.js, работает на ура... Но столкнулся с новой проблемой, как я понял спустя 2 минуты поиска в гугле через JS добраться до буфера обмена невозможно (с небольшим исключенIEм), но можно прикрутить Flash, который в свою очередь может скопировать нужный мне текст в буфер... и так, сложность: вообщем данное действие необходимо выполнять на локальной машине (по этой же причине пришлось отказаться от PHP), да еще и не одной а с возможность переносить на папку с прогой, *.js файлами которые она генерировала и моим файлом Index.html в котором я и пишу все эти скрипты... Вот собственно пример приемо-передачи JS<->Flash и не долго думая просто сохранил страницу и скачал bridge.swf запустил, но чуда не произошло - передачи не было... Как можно выкрутиться в этой ситуации?

Deff 31.01.2013 08:40

http://www.xiper.net/collect/js-plug...clipboard.html

Janom 31.01.2013 10:21

Да и этот пример я тоже пробовал, у меня на не копирует... причем никак не могу въехать почему... может знаете в чем может быть причина?

Deff 31.01.2013 10:24

Janom,
Не наю - вот делал на своих форумах копирования кода http://qps.ru/Gq0SA
Жать на Код:

Janom 31.01.2013 10:35

Вложений: 1
Не можешь попробовать запустить это на локальной машине? Вот как пытаюсь сделать я, но работать оно не хочет...

Deff 31.01.2013 10:42

Janom,
На локалке не работает, проверил свою тест страницу

Janom 31.01.2013 10:46

икс игрек ёво, похоже вариантов больше нет, тогда остается только такая байда (нашел здесь, но ссылку на автора не сохранил):
function ClBrd(text){
	if (window.clipboardData){
		window.clipboardData.setData("Text", text);
		alert ("Нужная строка добавлена в буфер обмена.");
	}else{
		var DummyVariable = prompt('Буфер обмена заблокирован браузером, нажмите Ctrl+C для копирования этой строки:',text);
	}
}


Часовой пояс GMT +3, время: 04:17.