Доступ к JS переменным с помощью C# - PullRequest
0 голосов
/ 26 января 2020

У меня есть переменная, которая задается в последнем теге скрипта при загрузке страницы, так как это требуется из-за доступа к DOM (с использованием сторонней библиотеки). Я хочу получить доступ к своей переменной, однако при доступе к ней через C# (ASP веб-приложение) я получаю "undefined".

Как я могу получить к ней доступ?

Если я запускаю следующие из C#:

ClientScript.RegisterStartupScript(GetType(), "hwa", "hello();", true);

Я получаю следующую ошибку: https://i.stack.imgur.com/veiLB.png

Моя функция приветствия:

function hello() {
 alert(mapData);
}

Эта переменная mapData установлена ​​в теге скрипта в конце тела, мой исходный код должен был вызывать функцию JS ПОСЛЕ загруженного сайта, однако она выглядит как неопределенная через C#, но все же появляется, если я использую веб-консоль.

Полный сценарий:

function createMap() {
mapData = L.map('map', {
    center: [20.0, 5.0],
    minZoom: 2,
    zoom: 5
});

L.mapData = mapData;

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
    subdomains: ['a', 'b', 'c']
}).addTo(L.mapData);
}

function createMarker(long, lat, type) {
    alert(L.mapData);
    L.marker([long, lat], { icon: L.icon({ iconUrl: 'Content/img/' + type + '.png', iconSize: [50, 60], iconAnchor: [22, 94], popupAnchor: [-3, -76], }) }).addTo(L.mapData);
}

function hello() {
    alert(mapData);
}

1 Ответ

0 голосов
/ 27 января 2020

Похоже, ваш hello-метод вызывается до создания экземпляра mapData.

Я не вижу, где он создается, но вы могли бы изменить свой регистровый скрипт следующим образом:

ClientScript.RegisterStartupScript(GetType(), "hwa", "createMap(); hello();", true);

Обратите внимание, что вы, возможно, захотите добавить функцию обратного вызова hello к своей функции создания.

Может также оказаться полезной дополнительная информация о том, что вы пытаетесь сделать здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...