Я называю .js файл в файле HTML. На URL в .js файл я хочу включать параметр, который будет доступен для кода В .js файле.
Например:
Я хочу быть в состоянии передать Значение идентификатора функции в jquery_widget.js файле, с помощью jQuery. Как это сделано?
Благодарный за всю справку!
Вы не можете этого сделать: вы должны объявить переменную перед загрузкой скрипта. Пример:
<script type="text/javascript">
var foo= "bar";
</script>
<script type="text/javascript" href="path/to/js.js"></script>
в этом Кстати, переменная будет готова для вашего скрипта.
Еще одно решение - использовать php-скрипт, который затем может использовать переменную GET. В этом случае убедитесь, что вы сообщаете с помощью вызова header (), что вы выводите javascript
<script type="text/javascript" src="ip.php"></script>
И ip .php
<?
//"ip.php" example- display user IP address on any page
Header("content-type: application/x-javascript");
$serverIP=$_SERVER['REMOTE_ADDR'];
echo "document.write(\"Your IP address is: <b>" . $serverIP . "</b>\")";
?>
Поскольку у меня была функция вывода байтов в файл (потому что я делал что-то с растровыми изображениями), я также повторно использовал ее для вывода последовательности, например:
var filename:String = "/Users/me/path/to/file.txt"; var byteArray:ByteArray = new ByteArray(); byteArray.writeUTFBytes(someString); outFile(filename, byteArray); private static function outFile(fileName:String, data:ByteArray):void { var outFile:File = File.desktopDirectory; // dest folder is desktop outFile = outFile.resolvePath(fileName); // name of file to write var outStream:FileStream = new FileStream(); // open output file stream in WRITE mode outStream.open(outFile, FileMode.WRITE); // write out the file outStream.writeBytes(data, 0, data.length); // close it outStream.close(); }-121--4155553-
В ASP.NET приложении я просто разрешал обработчикам событий создавать исключения. Эти исключения позволят использовать пользовательские функции страницы ошибок ASP.NET.
В настольном приложении я всегда добавляю блок try/catch/finally вокруг кишок любого обработчика событий. Таким образом, любые исключения всегда регистрируются и отображаются конечному пользователю, но никогда не выходят из обработчика событий, поэтому они не приводят к аварийному завершению работы приложения.
-121--2149278-Вы используете что-то вроде php
your html file:
<script type="text/javascript" src="yourFile.php?var=123">
yourFile.php:
// <?php echo($_GET["var"]); ?>
Или вы можете определить глобальную переменную и иметь javascript доступ к этой переменной.
Самому файлу javascript не известен URL-адрес, с которого он загружается.
Что вы можете сделать, так это назначить идентификатор тегу script
, который вы включаете на HTML-страницу, а затем получить атрибут SRC через jQuery. Анализируя значение URL-адреса, вы можете извлечь параметр.
<script id='widgetJs' src='...'></script>
var url = $("#widgetJs").attr("src");
var q = url.split("?")[1];
if (q) {
var params = q.split("&");
etc. etc...
i'm not even going to explain further because there are better solutions.
}
Более простое решение - объявить глобальную переменную в отдельном теге script
(пространство имен, чтобы избежать конфликтов), а затем использовать ее непосредственно в вашем сценарии.
Или, что еще лучше, включите в сценарий функцию initialize (param)
, которую вы вызываете из файла HTML (это избавляет вас от загрязнения глобального контекста ненужными переменными).
Файлы HTML и javascript являются статическими ресурсами и будут интерпретироваться только клиентским браузером, поэтому вы не можете передавать какие-либо параметры запроса этим значениям и читать их внутри. Вы можете динамически генерировать файлы javascript с параметрами в serveride, а затем включите его как часть страницы. Или другой простой способ - написать файл js как файл php или jsp и установить тип содержимого страницы на текст / javascript
, и вы сможете получить доступ ко всем параметрам внутри него
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href
.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Подойдите к проблеме иначе:
При попытке считать параметры из URL, я использовал:
function PageQuery(q) {
if (q.length > 1) this.q = q.substring(1, q.length);
else this.q = null;
this.keyValuePairs = new Array();
if (q) {
for (var i = 0; i < this.q.split("&").length; i++) {
this.keyValuePairs[i] = this.q.split("&")[i];
}
}
this.getKeyValuePairs = function() { return this.keyValuePairs; }
this.getValue = function(s) {
for (var j = 0; j < this.keyValuePairs.length; j++) {
if (this.keyValuePairs[j].split("=")[0] == s)
return this.keyValuePairs[j].split("=")[1];
}
return false;
}
this.getParameters = function() {
var a = new Array(this.getLength());
for (var j = 0; j < this.keyValuePairs.length; j++) {
a[j] = this.keyValuePairs[j].split("=")[0];
}
return a;
}
this.getLength = function() { return this.keyValuePairs.length; }
}
function queryString(key) {
var page = new PageQuery(window.location.search);
return unescape(page.getValue(key));
}
function displayItem(key) {
if (queryString(key) == 'false') {
document.write("you didn't enter a ?name=value querystring item.");
} else {
document.write(queryString(key));
}
}