Согласно вашему комментарию, вот что T.J. мы говорили о том, что вам нужно превратить ваш второй блок скриптов в нечто вроде этого:
<script type="application/javascript" src="Resources/JavaScript/proj4js-combined.js"></script>
<script type="application/javascript">
function mouseMove(sender,eventArgs) {
var source = new Proj4js.Proj('EPSG:3116');
var dest = new Proj4js.Proj('WGS84');
var p = new Proj4js.Point(px, py);
Proj4js.transform(source, dest, p);
}
</script>
... но вам действительно нужно просто переместить блок встроенного кода (что находится во втором теге <script>
в моем ответе) во внешний файл Javascript.
Редактировать 1: Каков фон программирования, из которого вы работаете? Если это что-то вроде C # или Java, вам нужно забыть то, что вы о них знаете, и совершенно по-другому подходить к Javascript. Javascript - это интерпретируемый язык, а не скомпилированный; кроме всего прочего, это означает, что порядок, в котором ваши функции объявлены, имеет значение .
Когда я говорю «объявление функции», я имею в виду все, что выглядит следующим образом:
function myNewFunction()
{
// anything else here
}
Это сообщает интерпретатору Javascript о новой функции под названием myNewFunction
, тело которой состоит из того, что находится в фигурных скобках.
Вот пример того, о чем я говорю, когда говорю, что вы используете функцию до того, как объявили ее. Рассмотрим следующий блок кода (в отрыве от любого другого Javascript, скажем, во внешнем файле Javascript):
function foo() // this line declares the function called "foo"
{
}
function bar() // this line declares the function called "bar"
{
foo(); // this line invokes the previously declared function called "foo"
}
Это будет работать, как и ожидалось, потому что foo()
было объявлено до того, как вы его вызвали. Однако то, что (похоже) вы пытаетесь сделать, аналогично следующему:
function foo() // this line declares the function called "foo"
{
bar(); // this line tries to invoke the function called "bar"
// but it hasn't been declared yet! so it's undefined
}
function bar() // this line declares the function called "bar"
{
}
Если бы вы запустили этот второй фрагмент Javascript, он бы не сработал, потому что вы вызываете функцию до того, как она была объявлена. *
* Сноска: на самом деле это не так, потому что использование этого синтаксиса (function foo() { ... }
) делает что-то особенное и волшебное в Javascript. Мой конкретный пример на самом деле сработает, но он иллюстрирует вашу проблему.