Результаты поиска
Как обновить страницу на Javascript
Напишите функцию обновления страницы на Javascript или Jquery? Заранее спасибо 
Как определить, какой из определенных шрифтов был использован на веб-странице?
Предположим, что у меня на странице есть следующее правило CSS:
body {
font-family: Calibri, Trebuchet MS, Helvetica, sans-serif;
}
Как я могу определить, какой из определенных шрифтов был использован в браузере пользователя?
Редактирование для людей, которым интересно, почему я хочу сделать это: шрифт, который я обнаруживаю, содержит глифы, которые не доступны в других шрифтах, и когда у пользователя нет шрифта, я хочу отобразить ссылку с просьбой загрузить этот шрифт, чтобы они могли использовать мое веб-приложение с правильным шрифтом.
В настоящее время я показываю ссылку на шрифт загрузки для всех пользователей, я хочу показать это только для людей, у которых не установлен правильный шрифт.
ASP.Net Пользовательская Проверка На Стороне Клиента
У меня есть пользовательская функция проверки в JavaScript в пользовательском элементе управления на веб-сайте .Net 2.0, которая проверяет, не превышает ли уплаченная плата причитающуюся сумму.
Я поместил код валидатора в файл ascx , а также попытался использовать Page.ClientScript.RegisterClientScriptBlock() и в обоих случаях срабатывает проверка, но не могу найти функцию JavaScript.
Вывод в консоли ошибок Firefox - это "feeAmountCheck is not defined" . Вот эта функция (она была взята непосредственно из firefox - >view source)
<script type="text/javascript">
function feeAmountCheck(source, arguments)
{
var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');
if (amountDue.value > 0 && amountDue >= amountPaid)
{
arguments.IsValid = true;
}
else
{
arguments.IsValid = false;
}
return arguments;
}
</script>
Есть идеи, почему эта функция не найдена? Как я могу исправить это, не добавляя функцию на главную страницу или страницу потребления?
Тройные Кавычки? Как я могу разграничить строковый параметр databound Javascript в ASP.NET?
Как я могу разграничить строковый параметр Javascript с привязкой к данным в событии anchor OnClick ?
- У меня есть тег anchor в элементе управления ретранслятором ASP.NET.
- Событие
OnClickanchor содержит вызов функции Javascript. - Функция Javascript принимает строку в качестве входного параметра.
- Строковый параметр заполняется привязанным к данным значением из ретранслятора.
Мне нужен "double quotes" для Container.DataItem .
Мне нужен 'single quotes' для OnClick .
А мне еще нужен один разделитель (тройные кавычки?) для входного строкового параметра вызова функции Javascript.
Поскольку я не могу использовать 'single quotes' снова, как я могу гарантировать, что функция Javascript знает, что входной параметр является строкой, а не целым числом?
Без дополнительных кавычек вокруг входного строкового параметра функция Javascript думает, что я передаю целое число.
В anchor:
<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>
а вот и Javascript-й:
<script language="JavaScript" type="text/javascript">
/* Shows/Hides the Jobs Div */
function ToggleDisplay(jobCode)
{
/* Each div has its ID set dynamically ('d' plus the JobCode) */
var elem = document.getElementById('d' + jobCode);
if (elem)
{
if (elem.style.display != 'block')
{
elem.style.display = 'block';
elem.style.visibility = 'visible';
}
else
{
elem.style.display = 'none';
elem.style.visibility = 'hidden';
}
}
}
</script>
Http Auth в букмарклете Firefox 3
Я пытаюсь создать букмарклет для размещения закладок del.icio.us в отдельном аккаунте.
Я проверил его из командной строки, как:
wget -O - --no-check-certificate \
"https://seconduser:thepassword@api.del.icio.us/v1/posts/add?url=http://seet.dk&description=test"
Это прекрасно работает.
Затем я хотел создать букмарклет в моем firefox. Я погуглил и нашел кусочки и куски, и в итоге получил:
javascript:void(
open('https://seconduser:password@api.del.icio.us/v1/posts/add?url='
+encodeURIComponent(location.href)
+'&description='+encodeURIComponent(document.title),
'delicious','toolbar=no,width=500,height=250'
)
);
Но все, что происходит, это то, что я получаю это от del.icio.us:
<?xml version="1.0" standalone="yes"?>
<result code="access denied" />
<!-- fe04.api.del.ac4.yahoo.net uncompressed/chunked Thu Aug 7 02:02:54 PDT 2008 -->
Если я затем перейду в адресную строку и нажму enter, она изменится на:
<?xml version='1.0' standalone='yes'?>
<result code="done" />
<!-- fe02.api.del.ac4.yahoo.net uncompressed/chunked Thu Aug 7 02:07:45 PDT 2008 -->
Есть идеи, как заставить его работать непосредственно из закладок?
Как клавиатура вниз или вверх между выпадающим "options"?
У меня есть специально построенный динамический выпадающий список на основе ajax [div].
У меня есть поле [input], которое; onkeyup, запускает поиск Ajax, который возвращает результаты в div s и возвращается в использование innerHTML . Эти div s все имеют основные моменты onmouseover так, типичный успешный поиск дает следующую структуру (простите полу-код):
[input]
[div id=results] //this gets overwritten contantly by my AJAX function
[div id=result1 onmouseover=highlight onclick=input.value=result1]
[div id=result2 onmouseover=highlight onclick=input.value=result2]
[div id=result2 onmouseover=highlight onclick=input.value=result2]
[/div]
Это работает.
Однако мне не хватает важных функций за регулярными элементами HTML. Я не могу клавиатуру вниз или вверх между "options".
Я знаю, что javascript обрабатывает события клавиатуры, но; я не смог найти хорошего гида. (Конечно, последующий вопрос будет заключаться в следующем: могу ли я использовать <ENTER> для запуска этого события onclick ?)
Перенос списков в столбцы
Я использую ColdFusion для заполнения шаблона, который включает в себя HTML списков ( <ul>'s).
Большинство из них не так уж и длинны, но некоторые имеют смехотворно длинные длины и действительно могут стоять в колонках 2-3.
Есть ли HTML, ColdFusion или, возможно, JavaScript (у меня есть jQuery` в наличии) способ сделать это легко? Это не стоит какого-то сверхсложного тяжеловесного решения, чтобы сэкономить немного прокрутки.
Как настроить переключатель CSS
Я работаю над сайтом, который будет переключаться на новый стиль на определенную дату. Сайт построен в семантических HTML и CSS, поэтому изменение должно просто потребовать изменения ссылки CSS. Я работаю с дизайнером, которому нужно будет видеть, как он выглядит, а также с клиентом, которому нужно будет просматривать обновления контента в текущем виде, а также прогресс дизайна в новом виде.
Я планирую использовать значение magic querystring и / или ссылку javascript в нижнем колонтитуле, которая записывает cookie для выбора новой страницы CSS. Мы работаем в ASP.NET 3.5. Есть рекомендации?
Я должен упомянуть, что мы используем условные комментарии IE для поддержки IE8, 7 и 6. Я могу создать функцию, которая выполняет замену:
<link href="Style/<% GetCssRoot() %>.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 8]>
<link type="text/css" href="Style/<% GetCssRoot() %>-ie8.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 7]>
<link type="text/css" href="Style/<% GetCssRoot() %>-ie7.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 6]>
<link type="text/css" href="Style/<% GetCssRoot() %>-ie6.css" rel="stylesheet" />
<![endif]-->
Как я могу опубликовать и затем перенаправить на внешний URL из ASP.Net?
ASP.NET серверные элементы управления обратной связью на свою собственную страницу. Это приводит к тому, что вы хотите перенаправить пользователя на внешнюю страницу, но по какой-то причине (например, для аутентификации) должны разместить на этой странице сообщение.
HttpWebRequest отлично работает, если вы не хотите перенаправлять, а JavaScript в некоторых случаях подходит, но может стать сложным, если вам действительно нужен код на стороне сервера,чтобы собрать данные для публикации.
Так как же вы одновременно отправляете сообщение на внешний URL и перенаправляете пользователя на результат из вашего кода ASP.NET codebehind?
Длина объекта JavaScript
Если у меня есть объект JavaScript, скажем
var myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
существует ли встроенный или общепринятый наилучший способ получения длины этого объекта?
Как указать javascript для запуска при отображении ModalPopupExtender
У ASP.NET AJAX ModalPopupExtender есть свойства OnCancelScript и OnOkScript , но у него, похоже, нет свойства OnShowScript . Я бы хотел указать функцию javascript для запуска при каждом появлении всплывающего окна.
В прошлых ситуациях я устанавливал TargetControlID на фиктивный элемент управления и предоставлял свой собственный элемент управления, который сначала выполняет некоторый код JS, а затем использует методы JS для отображения всплывающего окна. Но в этом случае я показываю всплывающее окно как из клиентского, так и из серверного кода.
Кто-нибудь знает способ сделать это?
BTW, мне это было нужно, потому что у меня есть textbox в модале, который я хочу сделать редактором TinyMCE. Но сценарий TinyMCE init не работает с невидимыми текстовыми полями, поэтому мне пришлось найти способ запустить его в то время, когда модальный был показан
Анимация в javascript, отправная точка
Я понимаю, как JS запускается, и я думаю, что понимаю большую часть DOM, но я понятия не имею об анимации. Кто-нибудь здесь знает хорошего гида, который может объяснить мне, как это делается в Javascript?
Кроме того, должен ли я даже рассматривать Javascript для анимации? Должен ли я вместо этого искать, чтобы узнать flash?
Как добавить тег pre внутрь кодового тега с jQuery?
Я пытаюсь использовать jQuery для форматирования блоков кода, а именно для добавления тега <pre> внутри тега <code> :
$(document).ready(function() {
$("code").wrapInner("<pre></pre>");
});
Firefox применяет форматирование правильно, но IE помещает весь блок кода в одну строку. Если я добавлю предупреждение
alert($("code").html());
Я вижу, что IE вставил некоторый дополнительный текст в тег pre:
<PRE jQuery1218834632572="null">
Если я перезагружаю страницу, число после jQuery изменяется.
Если я использую wrap() вместо wrapInner(), чтобы обернуть <pre> за пределами тега <code> , то и IE, и Firefox обрабатывают его правильно. Но разве <pre> не должен работать и внутри <code> ?
Я бы предпочел использовать wrapInner() , потому что затем я могу добавить класс CSS к тегу <pre> для обработки всех форматирований, но если я использую wrap() , мне придется поместить форматирование страницы CSS в тег <pre> и форматирование текста/шрифта в тег <code> , или Firefox и IE оба дросселя. Ничего особенного, но я бы хотел, чтобы все было как можно проще.
Кто-нибудь еще сталкивался с этим? Я что-то упустил?
Есть ли "concise" способ сделать пространство имен в JavaScript?
Я часто сталкивался с сайтами, которые помещали все свои JavaScript внутри структуры namespace вдоль линий:
namespaces = { com : { example: { example.com's data} }
Однако безопасная настройка этого по отношению к другим пространствам имен, по-видимому, требует относительно большого количества кода (определенного как > 2 строки). Мне было интересно, знает ли кто-нибудь краткий способ сделать это? Кроме того, есть ли относительно стандартный/последовательный способ структурировать его? Например, присоединяется ли пространство имен com непосредственно к глобальному объекту или оно присоединяется через объект пространства имен?
[Edit: упс, очевидно, {com = { ... } } не достигнет ничего близкого к тому, что я намеревался, благодаря Shog9 за указание на это.]
Прокрутка переполнена DIVs с JavaScript
У меня есть div, который использует overflow:auto, чтобы сохранить содержимое внутри div, когда оно изменяется и перетаскивается по странице. Я использую некоторые ajax для извлечения строк текста с сервера, а затем добавляю их в конец div, поэтому содержимое растет вниз. Каждый раз, когда это происходит, я хотел бы использовать JS-scroll div снизу, чтобы самый последний добавленный контент был виден, подобно тому, как будет работать чат или консоль командной строки.
До сих пор я использовал этот фрагмент кода, чтобы сделать это (я также использую jQuery, следовательно, функцию $() ):
$("#thediv").scrollTop = $("#thediv").scrollHeight;
Однако это дало мне противоречивые результаты. Иногда это работает, иногда нет, и он полностью перестает работать, если пользователь когда-либо изменяет размер div или перемещает панель scroll вручную.
Целевой браузер-это Firefox 3, и он развертывается в контролируемой среде, поэтому ему вообще не нужно работать в IE.
Есть идеи, ребята? Этот вопрос поставил меня в тупик. Спасибо!
Как удалить дочерний узел в HTML с помощью JavaScript?
Есть ли такая функция, как document.getElementById("FirstDiv").clear() ?
Древовидный (против HTML-Based) веб-фреймворк?
Любой, кто пишет на стороне клиента JavaScript, знаком с DOM-древовидной структурой, на которую ссылается Ваш браузер в памяти, сгенерированной из HTML, полученной от сервера. JavaScript может добавлять, удалять и изменять узлы в дереве DOM для внесения изменений в страницу. Я считаю, что очень приятно работать с (Ошибки браузера в сторону), и очень отличается от того, как мой код на стороне сервера должен генерировать страницу в первую очередь.
Мой вопрос: какие серверные фреймворки / языки создают страницу, рассматривая ее как дерево DOM с самого начала-вставляя узлы вместо Эхо-строк? Я думаю, что было бы очень полезно, если бы клиентский и серверный код видели страницу одинаково. Вы, конечно, можете взломать что-то подобное вместе на любом языке веб-сервера, но фреймворк, предназначенный для создания страницы таким образом, может сделать некоторые очень хорошие оптимизации.
Открытый исходный код, будучи широко развернутым и будучи вокруг некоторое время все будет плюсы.
Создание автономных приложений в JavaScript
С увеличением мощности фреймворков JavaScript, таких как YUI, JQuery и Prototype, а также инструментов отладки, таких как Firebug, создание приложения полностью на стороне браузера JavaScript выглядит как отличный способ сделать простые приложения, такие как головоломки и специализированные калькуляторы.
Есть ли у этого какой-то недостаток, кроме раскрытия вашего исходного кода? Как вы должны обращаться с хранилищем данных для такого рода программ?
Правка: да, Gears и cookies можно использовать для локального хранения, но вы не можете легко получить доступ к файлам и другим объектам, которые уже есть у пользователя. Вы также не можете сохранить данные в файл для пользователя без того, чтобы они не вызывали некоторые функции браузера, такие как печать в PDF или сохранение страницы в виде файла.
Что делают методы getUTC* в объекте date?
Что это значит, когда вы получаете или создаете дату в формате UTC в JavaScript?
Рекомендации по управлению и развертыванию больших приложений JavaScript
Каковы некоторые стандартные методы управления приложением среднего размера JavaScript? Меня беспокоит как скорость загрузки браузера, так и простота и ремонтопригодность разработки.
Наш код JavaScript примерно равен "namespaced" как:
var Client = {
var1: '',
var2: '',
accounts: {
/* 100's of functions and variables */
},
orders: {
/* 100's of functions and variables and subsections */
}
/* etc, etc for a couple hundred kb */
}
На данный момент у нас есть один (распакованный, нескрепленный, хорошо читаемый) файл JavaScript для обработки всей бизнес-логики в веб-приложении. Кроме того, существует jQuery и несколько jQuery расширений. Проблема, с которой мы сталкиваемся, заключается в том, что требуется вечность , чтобы найти что-либо в коде JavaScript, и браузер все еще имеет дюжину файлов для загрузки.
Часто ли у вас есть несколько файлов "source" JavaScript, которые получают "compiled" в один окончательный сжатый файл JavaScript? Есть еще какие-нибудь полезные советы или рекомендации?
Можно ли вообще отключить проверку на стороне клиента для текстового поля dojo дата?
В моем примере ниже я использую dijit.form.DateTextBox :
<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" constraints="{datePattern:'MM/dd/yyyy'}" value='<c:out value="${sessionScope.adminMessageForm.startDate}"/>' />
Так, например, если пользователь начинает вводить "asdf" в дату, поле становится желтым, и появляется всплывающее сообщение об ошибке с надписью The value entered is not valid. . Даже если я удалю constraints="{datePattern:'MM/dd/yyyy'}" , он все равно будет проверяться.
Не вдаваясь в детали относительно того, почему, я хотел бы иметь возможность сохранить dojoType и все же предотвратить проверку в определенных обстоятельствах.
Поиск конкретного расширения FireFox / программы для разноски форм
Я ищу либо расширение FireFox, либо аналогичную программу,которая позволяет создавать запросы GET и POST. Пользователь будет вводить действие формы и столько пар ключ/значение формы, сколько требуется. Он также будет отправлять любую информацию о файлах cookie (или отправлять текущие файлы cookie из любого домена, выбранного пользователем.) Надстройка веб-разработчика-это почти то, что я ищу; она позволяет вам быстро увидеть ключи формы, но она не позволяет вам изменять их или добавлять новые (что приводит к большому количеству болезненных JavaScript в адресной строке...)
Минимизировать javascript HTTP вызовов из AjaxControlToolkit элементов управления?
Мне нравится простота, которую предоставляет инструментарий управления ASP.NET Ajax для разработчиков ASP.NET. Однако я не нашел, что это вообще масштабируемое решение. У меня есть страница с 2 полями ввода даты. Помещая в него элемент управления TextBox и CalendarExtendar для каждого поля даты, я получаю несколько (11, по сути) внешних вызовов Javascript в /ScriptResource.axd?d=xxxx
Есть ли способ контролировать это? Почему это так отстойно? Для чего нужен лучший инструментарий Ajax .NET что может обеспечить равный (или лучший) набор функций, который является более масштабируемым, прямым и полностью настраиваемым? NOT глядя, чтобы изобрести колесо здесь.
Web App-Тип Панели Мониторинга GUI-Интерфейс
Я ищу, чтобы создать графический интерфейс типа панели мониторинга для веб-приложения. Я ищу, чтобы пользователь мог перетаскивать различные элементы (возможно, кнопки изображений, теги привязки или, возможно, просто divs) в разные (определенные) места и сохранять их настройки (в файле cookie или на сервере). Я работаю с c# в .Чистый рамках 2.0. Я пробовал использовать mootools, но их недавнее обновление оставило их возможности перетаскивания бесполезными для меня. Я ищу немного направления, потому что я знаю, что там есть что-то, что я ищу, поэтому мне не придется строить с нуля.
Спасибо.
Динамическая Алфавитная Навигация
Я использую ColdFusion , чтобы вернуть результирующий набор из базы данных SQL и превратить его в список.
Мне нужен какой-то способ создать алфавитную навигационную панель для этого списка. У меня есть библиотека ColdFusion и jQuery.
Я ищу, чтобы создать что-то вроде этого:
A | B | C | ...
- A
- A
- B
- B
- B
- C
- D
Где нажатие на одну из букв опускает вас вниз по странице до первого элемента для этой буквы. Не все 26 букв алфавита обязательно используются.
Связь между Javascript и сервером
Я разрабатывал "Form Builder" в Javascript и подходил к той части, где я буду отправлять спецификацию для формы обратно на сервер для хранения. Построитель поддерживает внутреннюю структуру данных, которая представляет поля, метку, параметры (для select/checkbox/radio), обязательный статус и общий порядок сортировки полей.
Когда я хочу отправить эту структуру обратно на сервер, в каком формате я должен ее передать?
Кроме того, при восстановлении сохраненной на сервере формы обратно в мой Javascript builder, должен ли я загружать данные в том же формате, в котором он их отправил, или я должен перестроить поля, используя функции createField() builder?
Google Maps API-проблемы с классом GLatLngBounds
У меня возникли некоторые проблемы с Google Maps API . У меня есть массив, который содержит ojbect, который я создал для хранения точек.
Мой массив и класс:
var tPoints = [];
function tPoint(name) {
var id = name;
var points = [];
var pointsCount = 0;
...
this.getHeadPoint = function() { return points[pointsCount-1]; }
}
tPoint содержит массив из GLatLng точек. Я хочу написать функцию для возврата объекта GLatLngBounds, который расширяется от текущих границ карты, чтобы показать все HeadPoints.
Вот что у меня есть до сих пор..
function getBounds() {
var mBound = map.getBounds();
for (var i = 0; i < tPoints.length; i++) {
alert(mBound.getSouthWest().lat() + "," + mBound.getSouthWest().lng());
alert(mBound.getNorthEast().lat() + "," + mBound.getNorthEast().lng());
currPoint = trackMarkers[i].getHeadPoint();
if (!mBound.containsLatLng(currPoint)) {
mBound.extend(currPoint);
}
}
return mBound;
}
Который возвращает эти значения для предупреждения. (Как правило, над US)
"19.64258,NaN"
"52.69636,NaN"
"i=0"
"19.64258,NaN"
"52.69636,-117.20701"
"i=1"
Я не знаю, почему я получаю NaN обратно. Когда я использую границы, чтобы получить уровень масштабирования, я думаю, что значение NaN вызывает map.getBoundsZoomLevel(bounds), чтобы вернуть 0, что неверно. Я использую GLatLngBounds неправильно?
Будет ли серверная часть JavaScript взлетать? Какая реализация наиболее стабильна?
Кто-нибудь видит, как взлетает сервер JavaScript? Есть несколько реализаций там, но все это кажется немного растянутым (как в, "doing it BECAUSE WE CAN" тип отношения).
Мне любопытно узнать, действительно ли кто-то пишет JavaScript для серверной части и каков их опыт работы с ним на сегодняшний день.
Кроме того, какая реализация обычно считается наиболее стабильной?
Рекомендация для библиотеки проверки формы javascript
Любые рекомендации для библиотеки проверки формы javascript. Я мог бы попробовать свернуть свой собственный (но я не очень хорош в javascript). Необходимо поддерживать проверку обязательных полей, а также желательно регулярное выражение проверки полей.
Лучший способ проверить наличие поддержки -moz-border-radius
Я хотел, чтобы некоторые из этих изящных закругленных углов были использованы для веб-проекта, над которым я сейчас работаю.
Я думал, что попытаюсь сделать это с помощью javascript, а не CSS, чтобы свести запросы к файлам изображений к минимуму (да, я знаю, что можно объединить все необходимые закругленные угловые формы в одно изображение), и я также хотел иметь возможность изменять цвет фона практически на лету.
Я уже использую jQuery, поэтому я посмотрел на отличный плагин с закругленными углами , и он работал как шарм в каждом браузере, который я пробовал. Будучи разработчиком, однако, я заметил возможность сделать его немного более эффективным. Скрипт уже содержит код для определения того, поддерживает ли текущий браузер webkit скругленных угла (браузеры на основе safari). Если это так, то он использует raw CSS вместо создания слоев divs.
Я подумал, что было бы здорово, если бы такая же проверка могла быть выполнена, чтобы увидеть, поддерживает ли браузер специфические для гекконов свойства -moz-border-radius-* и если да, то использовать их.
Проверка поддержки webkit выглядит следующим образом:
var webkitAvailable = false;
try {
webkitAvailable = (document.defaultView.getComputedStyle(this[0], null)['-webkit-border-radius'] != undefined);
}
catch(err) {}
Это, однако, не сработало для -moz-border-radius , поэтому я начал проверять альтернативы.
Моим запасным решением, конечно,является использование обнаружения браузера, но это далеко не рекомендуемая практика.
Мое лучшее решение пока заключается в следующем.
var mozborderAvailable = false;
try {
var o = jQuery('<div>').css('-moz-border-radius', '1px');
mozborderAvailable = $(o).css('-moz-border-radius-topleft') == '1px';
o = null;
} catch(err) {}
Он основан на теории, что геккон "expands" композит -moz-border-radius к четырем под-свойствам
-moz-border-radius-topleft-moz-border-radius-topright-moz-border-radius-bottomleft-moz-border-radius-bottomright
Есть ли какой-нибудь javascript/CSS гуру, у которого есть лучшее решение?
(Запрос функции для этой страницы находится на http://plugins.jquery.com/node/3619 )
Проверка десятичных чисел в JavaScript - IsNumeric()
Каков самый чистый и эффективный способ проверки десятичных чисел в JavaScript?
Бонусные баллы за:
- Ясность. Раствор должен быть чистым и простым.
- Межплатформенный.
Сценарии тестирования:
01. IsNumeric('-1') => true
02. IsNumeric('-1.5') => true
03. IsNumeric('0') => true
04. IsNumeric('0.42') => true
05. IsNumeric('.42') => true
06. IsNumeric('99,999') => false
07. IsNumeric('0x89f') => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3') => false
10. IsNumeric('') => false
11. IsNumeric('blah') => false
Инденторы и декораторы пакетного кода
Кто-нибудь знает хорошего пакетный файл инденторов код или beautifiers?
Специально для PHP, JS и SGML-языков.
Предпочтительно с вариантами относительно стиля.
Что я здесь сделал не так? [Javascript Regex]
Поэтому я пишу регистрационную форму, и мне нужно, чтобы отображаемое имя было только цифрами, буквами и подчеркиваниями.
Посмотрите на мой код и скажите мне, что я делаю неправильно.
<form method="post" action="/" onsubmit="return check_form()">
<input type="text" id="display-name" name="display-name" maxlength="255" />
<input type="submit" />
</form>
<script type="text/javascript">
<!--
var name_regex = /^([a-zA-Z0-9_])+/
function check_form()
{
if (!name_regex.test(document.forms[0].elements[0].value))
{
document.forms[0].elements[0].focus()
alert("Your display name may only contain letters, numbers and underscores")
return false
}
}
-->
</script>
Очевидно, что он был обрезан, чтобы не включать ничего, не связанного с проблемой, но даже этот фрагмент не работает.
Как найти ключи a hash?
Я знаю, что в javascript объекты удваиваются как хэши, но мне не удалось найти встроенную функцию для получения ключей
var h = {a:'b',c:'d'};
Я хочу что-то вроде
var k = h.keys() ; // k = ['a','c'];
Это просто написать функцию самостоятельно, чтобы перебирать элементы и добавлять ключи к массиву, который я возвращаю, но есть ли стандартный более чистый способ сделать это?
Я все время чувствую, что это должно быть простая встроенная функция, которую я пропустил, но я не могу ее найти!
Как я могу украсить код JavaScript с помощью командной строки?
Я пишу пакетный скрипт для того, чтобы украсить код JavaScript. Он должен работать как на Windows , так и на Linux .
Как я могу украсить код JavaScript с помощью инструментов командной строки?
455   9   04:54, 3rd August, 2020
JavaScript Порядок Загрузки
Я работаю как с amq.js (ActiveMQ), так и с Google Maps . Я загружаю свои скрипты в таком порядке
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>AMQ & Maps Demo</title>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="style.css"></link>
<!-- Google APIs -->
<script type="text/javascript" src="http://www.google.com/jsapi?key=abcdefg"></script>
<!-- Active MQ -->
<script type="text/javascript" src="amq/amq.js"></script>
<script type="text/javascript">amq.uri='amq';</script>
<!-- Application -->
<script type="text/javascript" src="application.js"></script>
</head>
Однако в моем application.js он загружает карты нормально, но я получаю ошибку при попытке подписаться на тему с AMQ. AMQ зависит от прототипа, который консоль ошибок в Firefox говорит, что объект не определен. Я думаю, что у меня есть проблема с использованием объекта amq до завершения загрузки скрипта. Есть ли способ убедиться, что оба скрипта загружаются, прежде чем я использую их в своем application.js?
У Google есть этот приятный вызов функции google.setOnLoadCallback(initialize); , который отлично работает. Я не уверен, что у amq.js есть что-то подобное.
Лучший способ исправить выпадающее меню CSS/JS в IE7, когда страница включает карту Google
У меня есть страница, использующая списки <ul> для навигации (Javascript изменяет стиль для отображения или нет при наведении курсора мыши).
Это работает нормально для меня, за исключением IE6 и IE7, когда у меня есть карта Google на странице.
В этом случае выпадающий список просто не работает. Однако страница продолжает работать в FireFox 2.
Я провел небольшое исследование и обнаружил, что это может быть примером ошибки IE Select Box , но я не уверен, поскольку карта Google, похоже, использует <div>, а не <iframe> .
Кто-нибудь еще сталкивался с проблемой, подобной этой, и если да, то есть ли у них какие-либо рекомендации по наилучшему способу преодоления этой проблемы?
Есть ли причины не использовать JSONP для AJA~X запросов?
Если вы создаете приложение AJA~Xy , есть ли какие-либо недостатки в использовании запросов/ответов JSONP , даже если вы не планируете использовать запросы cross-domain ?
Единственное, что я могу придумать, это то, что есть пара дополнительных байтов для оболочки обратного вызова...
Редактировать:
Я нашел это , что также предполагает security and error handling в качестве потенциальных проблем...
Там нет обработки ошибок.
script injectionлибо работает, либо нет. Если есть ошибка изinjection, она попадет на страницу, и за исключением обработчика ошибок с широким окном (плохо, плохо, очень плохо), вам нужно убедиться, что возвращаемое значение действительно наserver side.
Я не думаю, что error handling -это большая проблема... большинство из нас будет использовать библиотеку для создания JSON ... правильность моего ответа не является проблемой для этого вопроса.
и безопасность:
В интернете есть документы, которые могут помочь, но в качестве беглой проверки я бы проверил реферер в скрипте
server side.
похоже, что это потенциальная проблема с любым типом ответа... конечно, в сфере безопасности нет ничего уникального для JSONP ...?
Код для ответа на вопрос Да / нет в javascript
Я смог найти только функцию confirm() , которая дает кнопки OK / Cancel. Есть ли какой-нибудь способ дать кнопки Да/нет?
Нажмите на изображение, получите координаты
Я знаю, что это можно сделать, и у меня даже есть смутное представление о том, как это сделать, но оно перестает быть смутным.
У меня есть стандартный тег HTML image с изображением в нем, размером 100 на 100 пикселей. Я хочу, чтобы люди могли щелкнуть по изображению и для этого передать X и Y, которые они нажимают, в функцию.
Координаты должны быть относительно изображения сверху и слева.
Заранее благодарю вас за любую помощь.
Лучший способ сохранить упорядоченный список windows (от самого последнего созданного до самого старого)?
Каков наилучший способ управления списком windows (сохраняя их в порядке), чтобы иметь возможность продвигать следующее окно на верхний уровень, когда текущее окно верхнего уровня закрыто.
Это для веб-приложения, поэтому мы используем jQuery Javascript.
Мы обсудили несколько упрощенных решений, таких как использование массива и просто обработка индекса [0] в качестве самого верхнего окна.
Мне интересно, есть ли потенциально более эффективная или полезная альтернатива тому, что мы провели мозговой штурм.
Лучший способ проверить наличие поддержки -moz-border-radius
Я хотел, чтобы некоторые из этих изящных закругленных углов были использованы для веб-проекта, над которым я сейчас работаю.
Я думал, что попытаюсь сделать это с помощью javascript, а не CSS, чтобы свести запросы к файлам изображений к минимуму (да, я знаю, что можно объединить все необходимые закругленные угловые формы в одно изображение), и я также хотел иметь возможность изменять цвет фона практически на лету.
Я уже использую jQuery, поэтому я посмотрел на отличный плагин с закругленными углами , и он работал как шарм в каждом браузере, который я пробовал. Будучи разработчиком, однако, я заметил возможность сделать его немного более эффективным. Скрипт уже содержит код для определения того, поддерживает ли текущий браузер webkit скругленных угла (браузеры на основе safari). Если это так, то он использует raw CSS вместо создания слоев divs.
Я подумал, что было бы здорово, если бы такая же проверка могла быть выполнена, чтобы увидеть, поддерживает ли браузер специфические для гекконов свойства -moz-border-radius-* и если да, то использовать их.
Проверка поддержки webkit выглядит следующим образом:
var webkitAvailable = false;
try {
webkitAvailable = (document.defaultView.getComputedStyle(this[0], null)['-webkit-border-radius'] != undefined);
}
catch(err) {}
Это, однако, не сработало для -moz-border-radius , поэтому я начал проверять альтернативы.
Моим запасным решением, конечно,является использование обнаружения браузера, но это далеко не рекомендуемая практика.
Мое лучшее решение пока заключается в следующем.
var mozborderAvailable = false;
try {
var o = jQuery('<div>').css('-moz-border-radius', '1px');
mozborderAvailable = $(o).css('-moz-border-radius-topleft') == '1px';
o = null;
} catch(err) {}
Он основан на теории, что геккон "expands" композит -moz-border-radius к четырем под-свойствам
-moz-border-radius-topleft-moz-border-radius-topright-moz-border-radius-bottomleft-moz-border-radius-bottomright
Есть ли какой-нибудь javascript/CSS гуру, у которого есть лучшее решение?
(Запрос функции для этой страницы находится на http://plugins.jquery.com/node/3619 )
Проверка десятичных чисел в JavaScript - IsNumeric()
Каков самый чистый и эффективный способ проверки десятичных чисел в JavaScript?
Бонусные баллы за:
- Ясность. Раствор должен быть чистым и простым.
- Межплатформенный.
Сценарии тестирования:
01. IsNumeric('-1') => true
02. IsNumeric('-1.5') => true
03. IsNumeric('0') => true
04. IsNumeric('0.42') => true
05. IsNumeric('.42') => true
06. IsNumeric('99,999') => false
07. IsNumeric('0x89f') => false
08. IsNumeric('#abcdef') => false
09. IsNumeric('1.2.3') => false
10. IsNumeric('') => false
11. IsNumeric('blah') => false
JavaScript профилировщик в IE
Кто-нибудь знает инструмент для профилирования JavaScript в IE?
Список доступных:
- IE8 (только для Интернета Explorer 8)
- JavaScript профилировщик
- YUI!
Выполнение JavaScript из Flex: эта функция javascript опасна?
У меня есть приложение flex, которое нуждается в возможности генерировать и выполнять JavaScript. Когда я говорю это, я имею в виду, что мне нужно выполнить raw JavaScript, который я создаю в своем приложении Flex (а не только существующий метод JavaScript)
В настоящее время я делаю это, раскрывая следующий метод JavaScript:
function doScript(js){ eval(js);}
Затем я могу сделать что-то подобное в Flex (примечание: Я делаю что-то более существенное, чем окно предупреждения в реальном приложении Flex):
ExternalInterface.call("doScript","alert('foo'));
Мой вопрос заключается в том, накладывает ли это какой-либо риск безопасности, я предполагаю, что это не так, поскольку Flex и JasvaScript все работают на стороне клиента...
Есть ли лучший способ сделать это?
Динамическая загрузка файла JavaScript
Как можно надежно и динамически загрузить файл JavaScript? Это будет использоваться для реализации модуля или компонента, который при 'initialized' компонент будет динамически загружать все необходимые сценарии библиотеки JavaScript по требованию.
Клиент, использующий компонент, не обязан загружать все файлы сценариев библиотеки (и вручную вставлять теги <script> на их веб-страницу), реализующие этот компонент - только файл сценария компонента 'main'.
Как сделать это в обычных библиотеках JavaScript (прототип, jQuery и т. д.)? Объединяют ли эти инструменты несколько файлов JavaScript в одну распространяемую версию файла сценария 'build'? Или они делают какую-либо динамическую загрузку вспомогательных скриптов 'library'?
Дополнение к этому вопросу: есть ли способ обработать событие после загрузки динамически включаемого файла JavaScript? Прототип имеет document.observe для событий всего документа. Пример:
document.observe("dom:loaded", function() {
// initially hide all containers for tab content
$$('div.tabcontent').invoke('hide');
});
Каковы доступные события для элемента сценария?
Adobe AIR: обработка объектов JSON с сервера
У меня есть скрипт, который извлекает объекты с удаленного сервера через вызов Ajax. Сервер возвращает объекты в нотации JSON.
Однако, в Adobe AIR, существует ограничение на использование eval() по соображениям безопасности. Поэтому я могу получать ответы с удаленного сервера, но не могу превратить их обратно в объекты JavaScript. Есть ли обходной путь для этой проблемы? Я хотел бы использовать JSON для моих JavaScript объектов, так как он может быть использован почти сразу.
Примечание: Я понимаю последствия безопасности для форсирования проблемы, но я буду делать быструю разработку приложений для конкуренции, поэтому программа будет только быстрым прототипом и не будет использоваться для производственных целей. Тем не менее, было бы здорово, если бы была лучшая альтернатива тому, что я пытаюсь сделать сейчас
Обновление:
Спасибо Тео и jsight за их ответы;
Одна важная вещь, которую я узнал сегодня, заключается в том, что я действительно могу использовать библиотеки ActionScript, используя
<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>тег расширен на Adobe AIR. Проверьте ссылку Тео для получения более подробной информации!
XmlHttpRequest возвращаемые значения
Я ищу (возможно) правильный способ возврата данных из XmlHttpRequest . Варианты, которые я вижу, являются:
Обычная HTML . Пусть запрос форматирует данные и возвращает их в удобном формате.
Преимущество: легко потребляется на странице вызова.
Недостаток: очень жесткий, застревает с фиксированной компоновкой.XML . Пусть запрос возвращает XML, отформатируйте его с помощью XSLT на странице вызова.
Преимущество: запрашиваемая услуга легко потребляется другими источниками.
Недостаток: достаточно ли хороша поддержка браузера для XSLT?JSON . Пусть запрос возвращает JSON, потребляет его с помощью javascript, рендерит HTML соответственно.
Преимущество: легче 'OO-ify' javascript делает запрос.
Недостаток: вероятно, не так прост в использовании, как предыдущие два варианта.
Я также думал о том, чтобы перейти к варианту один, абстрагируя логику представления в вызываемом сервисе таким образом, чтобы переключение между различными макетами было бы тривиальным. Лично я считаю, что этот вариант является лучшим из трех, по соображениям совместимости.
Печатая это, я получил еще одно озарение. Было бы неплохо разрешить все три формата ответа на основе параметра, добавленного к запросу?
Добавление встроенной функции поиска на веб-страницу
Можно ли встроить встроенное окно поиска в веб-страницу, которая обеспечивает аналогичную функциональность для встроенного поиска IE7Pro или аналогичных плагинов для Firefox/Safari?
jQuery AJAX против UpdatePanel
У нас есть страница с тонной jQuery (примерно 2000 строк), которую мы хотим обрезать b/c это кошмар обслуживания, и его может быть проще поддерживать на сервере. Мы подумали о том, чтобы использовать для этого UpdatePanel. Однако нам не нравится тот факт, что UpdatePanel отправляет всю страницу обратно на сервер.
Есть ли какой-то способ показать содержимое HTML внутри Flash?
Я хочу показать содержимое HTML внутри Flash. Есть ли какой-то способ сделать это? Я говорю о полномасштабном HTML (с JavaScript, если это возможно).
Как обеспечить пространства имен в JavaScript экземплярами объектов
У меня есть JavaScript "object", построенный таким образом:
function foo()
{
this.length = 0;
}
foo.prototype.getLength = function()
{
return this.length;
}
...
Я знаю, как эмулировать пространства имен с объектами singleton JavaScript, но как лучше всего использовать объект "namepace", такой как выше, который будет intanced?
Я знаю, что несколько библиотек JavaScript имеют возможности размещения имен, но я использую jQuery и предпочел бы не добавлять еще одну библиотеку в микс. Я хотел бы иметь возможность предоставить свою собственную, возможно, используя jQuery, внутреннюю схему пространства имен для JS моих объектов,которые должны быть созданы.
Спасибо армированный пластик
Предложения по Ajax среде разработки для PHP
Я программист C/C++ профессионально, но я создал несколько личных веб-сайтов, используя PHP and MySQL .
Они довольно просты , и я хотел бы оживить их с помощью Ajax, но я никогда не делал никакого Ajax. Я сделал все разработки до сих пор вручную, т. е. нет IDE или что-то в этом роде.
Есть ли у кого-нибудь предложения по Ajax средам разработки, которые могут мне помочь?
Shareware или freeware были бы предпочтительнее, поскольку мне было бы трудно оправдать расходы на это больше, чем минимальная сумма денег...
Какова цель (если таковая имеется) "javascript:" в тегах обработчика событий?
В последнее время я прилагаю согласованные усилия, чтобы улучшить свои навыки javascript, читая как можно больше кода javascript. При этом я иногда видел префикс javascript: , добавляемый к передней части атрибутов обработчика событий в тегах элементов HTML. Какова цель этой приставки? В принципе, есть ли заметная разница между:
onchange="javascript: myFunction(this)"
и
onchange="myFunction(this)"
?
Что Javascript rich text editor не сломает проверку орфографии браузера?
Я использую TinyMCE в проекте ASP.Net, и мне нужна проверка орфографии. Единственные Плагины TinyMCE, которые я нашел, используют PHP на стороне сервера, и я думаю, что я мог бы просто сломать и установить PHP на моем сервере и сделать это, но, честно говоря, какая боль. Я не хочу этого делать.
Как оказалось, встроенная проверка орфографии Firefox будет отлично работать для меня, но она, похоже, не работает в редакторах TinyMCE. Я включил опцию gecko_spellcheck, которая должна исправить это, но это не так.
Кто-нибудь знает о хорошем текстовом редакторе, который не нарушает проверку орфографии браузера?
Проблема С Кнопкой Safari Назад
Я занимаюсь небольшим программированием и веб-работой для местного общественного колледжа. Работа, которая включает в себя поддержание очень большого и душераздирающего веб-сайта, который состоит из Ходж-поджа VBScript, javascript, Dreamweaver, сгенерированного cruft и коллекции дополнений, которые различные мошенники убедили их купить на протяжении многих лет.
Несколько дней назад мне позвонили "The website is locking up for people using Safari!" хорошо, Шаг первый скачать Safari (v3.1.2), Шаг второй серфинг на сайт. Кажется, все работает нормально.
Короче говоря, я наконец-то вычленил проблему, и она относится к кнопке возврата Safari. На сайте используется меню fancy-pants javascript, которое работает в каждом браузере, который я пробовал, включая Safari, в первый раз. Но в Safari, если вы перейдете по ссылке со страницы, а затем нажмете кнопку Назад, Меню больше не работает.
Я сделал сокращенную веб-страницу, чтобы проиллюстрировать этот принцип.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Safari Back Button Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onload="alert('Hello');">
<a href="http://www.codinghorror.com">Coding Horror</a>
</body>
</html>
Загрузите страницу, и вы увидите окно оповещения. Затем перейдите по ссылке со страницы и нажмите кнопку Назад. В IE и Firefox вы снова видите окно оповещения, в Safari-нет.
После энергичного поиска в гугле я обнаружил других людей с похожими проблемами, но без действительно удовлетворительных ответов. Таким образом, мой вопрос заключается в том, как я могу заставить мои страницы работать так же, как в Safari после того, как пользователь нажимает кнопку назад, как и в других браузерах?
Если это глупый вопрос, пожалуйста, будьте нежны, javascript несколько ново для меня.
Каковы некоторые примеры реализации шаблонов проектирования с использованием JavaScript?
Я умеренно квалифицированный программист, использующий JavaScript, но я не гуру. Я знаю, что вы можете делать с ним довольно мощные вещи, просто я не видел ничего, кроме довольно простых манипуляций DOM. Мне интересно, могут ли люди привести некоторые примеры традиционных концепций дизайна, таких как фабричный метод, Singleton и т. д. с использованием JavaScript. В каких случаях эти шаблоны будут использоваться в интернете?
440   10   01:27, 25th August, 2020
JavaScript редактор в Eclipse
Я ищу лучший редактор JavaScript, доступный в качестве плагина Eclipse. Я использую Spket, и это хорошо. Но есть ли еще более лучший вариант?
Экранирование строк HTML с помощью jQuery
Кто-нибудь знает простой способ избежать HTML из строк в jQuery ? Мне нужно иметь возможность передать произвольную строку и правильно экранировать ее для отображения на странице HTML (предотвращая атаки инъекций JavaScript/HTML). Я уверен, что для этого можно расширить jQuery, но на данный момент я недостаточно знаю о фреймворке, чтобы выполнить это.
Почему Response.BufferOutput = False, не работает?
Эта проблема началась на другой доске , но Дэйв Уорд, который был очень быстрым и полезным, тоже здесь, поэтому я хотел бы забрать здесь, надеюсь, последний оставшийся кусочек головоломки.
В основном, я искал способ сделать постоянные обновления веб-страницы из долгого процесса. Я думал, что AJAX - это правильный путь, но у Дэйва есть хорошая статья об использовании JavaScript . Я интегрировал его в свое приложение, и он отлично работал на моем клиенте, но NOT мой сервер WebHost4Life. У меня есть еще один сервер @ Brinkster и решил попробовать его там и он DOES работает. Все коды одинаковы на моем клиенте, WebHost4Life и Бринкстере, так что, очевидно, что-то происходит с WebHost4Life.
Я планирую написать им email или запросить техническую поддержку, но я хотел бы быть активным и попытаться выяснить, что может происходить с их концом, чтобы вызвать эту разницу. Я сделал все возможное с моим кодом, чтобы отключить буферизацию, как Page.Response.BufferOutput = False . Какие настройки сервера они могли бы реализовать, чтобы вызвать эту разницу? Есть ли какой-нибудь способ обойти его самостоятельно, без их помощи? А если нет, то что им нужно будет делать?
Для справки, ссылка на рабочую версию более простой версии моего приложения находится @ http://www.jasoncomedy.com/javascriptfun/javascriptfun.aspx , а та же версия, которая не работает, находится @ http://www.tabroom.org/Ajaxfun/Default.aspx . Вы заметите, что в рабочей версии вы получаете обновления с каждым шагом, но в той, которая этого не делает, он сидит там долгое время, пока все не будет сделано, а затем делает все обновления для клиента сразу ... и от этого мне становится грустно.
Выполнение скрипта после определенной задержки с помощью JavaScript
Существует ли какой-либо метод JavaScript, подобный jQuery delay() или wait() (чтобы задержать выполнение скрипта на определенное время)?
Всплывающие подсказки на изображении
У меня есть изображение, и на нем есть логотипы (это карта), я хочу иметь небольшое всплывающее окно с информацией о местоположении этого логотипа, когда пользователь перемещает свою мышь на указанный логотип.
Могу ли я сделать это без использования фреймворка javascript, и если да, то есть ли какие-либо небольшие библиотеки/скрипты, которые позволят мне сделать это?
Вставка в самом конце в FCKeditor
FCKeditor имеет InsertHtml API (документ JavaScript API), который вставляет HTML в текущую позицию курсора. Как вставить в самом конце документа?
Нужно ли мне запускать браузер нюхать что-то вроде этого
if ( element.insertAdjacentHTML ) // IE
element.insertAdjacentHTML( 'beforeBegin', html ) ;
else // Gecko
{
var oRange = document.createRange() ;
oRange.setStartBefore( element ) ;
var oFragment = oRange.createContextualFragment( html );
element.parentNode.insertBefore( oFragment, element ) ;
}
или есть благословенный путь, который я пропустил?
Edit: конечно, я могу переписать весь HTML, как предлагают ответы, но я не могу поверить, что это путь "blessed". Это означает, что браузер должен уничтожить все, что у него есть, и повторно проанализировать документ с нуля. Это не может быть хорошо. Например, я ожидаю, что это сломает стек отмены.
Что является лучшим всплывающим календарем для заполнения веб-формы?
Я хочу иметь возможность сделать вызов HTTP, обновляя некоторые поля выбора После выбора даты. Я хотел бы контролировать обновление textbox, чтобы знать, когда произошло изменение "true" (в том случае, если была выбрана та же дата). В идеале, я бы вызвал функцию, чтобы открыть календарь и иметь возможность оценить дату перед заполнением текста box...so я могу сделать свою проверку перед вызовом сервера.
Есть ли библиотека виджетов Scheduler / Calendar JS?
Я ищу какой-то компонент на основе JavaScript, который будет использоваться в качестве планировщика курса, который будет представлять собой нечто среднее между календарем Google и временем входа в систему. Я не знаю, подходит ли для этого термин " планировщик курса ", но я опишу это более подробно здесь.
Планировщик Курсов
Виджет будет использоваться для ввода даты и времени курса, например, если я запускаю курс программирования 3 дня в неделю по понедельникам, Вт и СР каждые 7:00 утра до 9:00am, 2 часа каждый день с 1 сентября по 30 ноября. Я мог бы ответить на различные вопросы, и данные курса будут отображаться в календаре. Это также позволит использовать не основанные на шаблонах тайминги, где каждая неделя отличается от другой недели и т. д.
Вопрос
Так неужели я в конечном итоге создам что-то с нуля? Было бы разумно использовать Google Calendar API для этого? Я сделал поиск в Google для некоторых виджетов, но я считаю, что мне нужны лучшие ключевые слова, так как я не смог найти ничего близкого к тому, что я ищу. Есть какие-нибудь советы? Коммерческие библиотеки тоже будут работать на меня. Спасибо.
Зарезервированные ключевые слова в JavaScript
Какие ключевые слова JavaScript (имена функций, переменные и т.д.) зарезервированы?
Что такое селекторный двигатель?
Я видел новости о быстром новом селекторном двигателе Джона Ресига под названием Sizzle , появившиеся в нескольких местах, но я не знаю, что такое селекторный двигатель, и ни в одной из статей не было дано объяснения того, что это такое. Я знаю, что Resig-это создатель jQuery, и это шипение-что-то в Javascript, но кроме этого я не знаю, что это такое. Итак, что же такое селекторный двигатель?
Спасибо!
Активный Элемент Управления X JavaScript
Мы с моим коллегой столкнулись с неприятной ситуацией, когда нам приходится использовать активный элемент управления X для управления веб-камерой на странице.
Можно ли назначить обработчик событий javascript кнопке в активном элементе управления x, чтобы она запускала действие на странице при нажатии, или нам нужно создать кнопку на самой странице html, которая управляет активным элементом управления X, а затем может запускать любые необходимые действия на странице?
Рекомендации для редактора Javascript на Windows?
Есть ли какие-нибудь хорошие рекомендации, которые кто-нибудь может предоставить для хорошего редактора Javascript на Windows?
В настоящее время я использую комбинации FireBug и TextPad, но не хотел бы пропустить вечеринку, если там есть лучшие варианты.
Спасибо.
Сравнение массивов объектов в JavaScript
Я хочу сравнить 2 массива объектов в коде JavaScript. Объекты имеют 8 общих свойств, но каждый объект не будет иметь значения для каждого, и массивы никогда не будут больше 8 элементов каждый, так что, возможно, метод грубой силы обхода каждого и затем просмотра значений 8 свойств является самым простым способом сделать то, что я хочу сделать, но перед реализацией я хотел бы посмотреть, есть ли у кого-нибудь более элегантное решение. Есть какие-нибудь мысли?
Javascript: объявление переменной перед условным результатом?
Мой JavaScript довольно номинальный, поэтому, когда я увидел эту конструкцию, я был немного озадачен:
var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
shareProxiesPref.disabled = proxyTypePref.value != 1;
Не лучше ли сделать if на proxyTypePref.value, а затем объявить var внутри результата, только если вам это нужно?
(Кстати, я также нашел эту форму очень трудной для чтения по сравнению с обычным использованием. Вместо выполнения одного if с блоком операторов в результате был создан набор из двух или трех таких условных выражений.)
UPDATE:
Ответы были очень полезными и требовали большего контекста. Фрагмент кода от Firefox 3, так что вы можете увидеть код здесь:
http://mxr.mozilla.org/firefox/source/browser/components/preferences/connection.js
В принципе, когда вы смотрите на окно настроек подключения в Firefox, щелчок по режимам прокси (переключателям) вызывает включение|отключение различных элементов формы.
Сохраняя пары ключевых значений вместе в HTML с jQuery?
Учитывая выбор с несколькими вариантами в jQuery.
$select = $("<select></select>");
$select.append("<option>Jason</option>") //Key = 1
.append("<option>John</option>") //Key = 32
.append("<option>Paul</option>") //Key = 423
Как следует хранить и извлекать ключ?
ID может быть местом OK, но не будет гарантировано уникальным, если у меня есть несколько общих значений select (и другие сценарии).
Спасибо
и в духе TMTOWTDI.
$option = $("<option></option>");
$select = $("<select></select>");
$select.addOption = function(value,text){
$(this).append($("<option/>").val(value).text(text));
};
$select.append($option.val(1).text("Jason").clone())
.append("<option value=32>John</option>")
.append($("<option/>").val(423).text("Paul"))
.addOption("321","Lenny");
Где я могу узнать jQuery? Стоит ли оно того?
У меня было много хорошего опыта, изучая веб-разработку на w3schools.com . Это хит или промах, я знаю, но разделы PHP и CSS оказались очень полезными для справки.
В любом случае, мне было интересно, есть ли подобный сайт для jQuery . Я заинтересован в обучении, но мне нужно, чтобы он был online/searchable,, чтобы я мог легко вернуться к нему, когда мне понадобится информация в будущем.
Кроме того, в качестве краткого замечания, стоит ли изучать jQuery? Или мне стоит посмотреть на разные библиотеки JavaScript? Я знаю, что Джефф использует jQuery для переполнения стека, и это, кажется, хорошо работает.
Спасибо!
Edit: на веб-сайте jQuery есть довольно большой список учебных пособий и, казалось бы, исчерпывающая страница документации . У меня еще не было времени пройти через все это, у кого-нибудь еще был опыт с этим?
Правка 2: похоже, что Google теперь размещает библиотеки jQuery. Это должно дать jQuery довольно большое преимущество с точки зрения публичности.
Кроме того, если все пользователи используют единую унифицированную библиотеку aQuery, размещенную в одном и том же месте, она должна быть кэширована для большинства пользователей Интернета на ранней стадии и поэтому не должна влиять на загрузку вашего сайта, если вы решите ее использовать.
2 Месяца Спустя...
Правка 3: я недавно начал использовать jQuery в проекте на работе, и с ним очень приятно работать! Просто хотел, чтобы все знали, что я пришел к выводу, что ABSOLUTELY стоит того, чтобы изучить и использовать jQuery.
Кроме того, я почти полностью изучил официальную документацию jQuery и учебные пособия . Это очень просто.
10 Месяцев Спустя...
jQuery является частью почти каждого веб-приложения, которое я сделал с тех пор, как я впервые написал этот пост. Это делает прогрессивное улучшение легким ветерком и помогает сделать код ремонтопригодным.
Кроме того, все плагины jQuery являются бесценным ресурсом!
3 Года Спустя...
По-прежнему использую jQuery почти каждый день. Теперь я автор jQuery плагинов и консультирую полный рабочий день. Я в основном Джангонавт, но я сделал несколько контрактов javascript только с jQuery. Это спасает нам жизнь.
От одного пользователя jQuery к другому... Вы должны посмотреть на шаблон с jQuery (или подчеркиванием-см. ниже).
Другие вещи, которые я нашел ценными в дополнение к jQuery (с предполагаемой частью проектов, на которых я использую его):
- jQuery Плагин Формы (95%)
- jQuery Пример Формы Плагин (75%)
- jQuery UI (70%)
- Underscore.js (80%)
- CoffeeScript (30%)
- Backbone.js (10%)
ASP.NET JavaScript Обратные Вызовы Без Полного PostBacks?
Я собираюсь запустить довольно тяжелую функцию Ajax в приложении моей компании. Что мне нужно сделать, так это сделать обратный вызов Ajax каждые несколько минут, когда пользователь был на странице.
- Мне не нужно делать никаких обновлений DOM до, после или во время обратных вызовов.
- Мне не нужна никакая информация со страницы, просто файл cookie сайта, который всегда должен быть отправлен с запросами в любом случае, и значение ID.
Мне любопытно узнать, есть ли какой-нибудь чистый и простой способ сделать обратный вызов JavaScript Ajax на страницу ASP.NET, не отправляя обратно rest информации на странице. Я хотел бы не делать этого, если это возможно.
Я действительно просто хочу иметь возможность вызвать один метод на странице, ничего больше.
Кроме того, я ограничен ASP.NET 2.0, поэтому я не могу использовать ни одну из новых функций 3.5 framework ASP AJAX, хотя я могу использовать расширения ASP AJAX для платформы 2.0.
ОБНОВЛЕНИЕ
Я решил принять ответ DanP, поскольку он, похоже, именно то, что я ищу. Наш сайт уже использует jQuery для некоторых вещей, поэтому я, вероятно, буду использовать jQuery для выполнения запросов, поскольку по моему опыту он работает намного лучше, чем фреймворк AJAX ASP.
Как вы думаете, каким будет лучший способ передачи данных в IHttpHandler? Должен ли я добавить переменные в строку запроса или POST данные, которые мне нужно отправить?
Единственное, что я думаю, что мне нужно отправить, - это один ID, но я не могу решить, какой лучший способ отправить ID и заставить IHttpHandler обработать его. Я хотел бы предложить решение, которое предотвратило бы случайный или преднамеренный доступ человека с базовыми компьютерными навыками непосредственно к странице или повторение запросов. Разве это возможно?
Обнаружение неопределенного свойства объекта
Как лучше всего проверить, является ли свойство объекта в JavaScript неопределенным?
Есть ли библиотека для рендеринга основных блок-схем в Javascript/CSS?
На веб-странице Я хочу динамически отображать очень простые блок-схемы, т. е. несколько ящиков, соединенных линиями. В идеале пользователь может нажать на один из этих ящиков ( DIVs ?) и быть перенесенным на другую страницу. Обращение к Flash кажется излишним. Кто-нибудь знает о какой-либо стороне клиента (т. е. server agnostic ) Javascript или CSS library/technique , которые могут помочь достичь этого?
Лучший компрессор JavaScript
Какой самый лучший компрессор JavaScript доступен? Я ищу инструмент, который:
- прост в использовании
- имеет высокую степень сжатия
- Производить надежные конечные результаты (не портит код)
Javascript Причуды Браузера - array.Length
Код:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unusual Array Lengths!</title>
<script type="text/javascript">
var arrayList = new Array();
arrayList = [1, 2, 3, 4, 5, ];
alert(arrayList.length);
</script>
</head>
<body>
</body>
</html>
Обратите внимание на лишнюю запятую в объявлении массива. Приведенный выше код дает различные выходные данные для различных браузеров:
Safari: 5
Firefox: 5
IE: 6
Лишняя запятая в массиве игнорируется Safari и FF, в то время как IE обрабатывает ее как другой объект в массиве.
При некоторых поисках я нашел смешанные мнения о том, какой ответ является правильным. Большинство людей говорят, что IE-это правильно, но тогда Safari делает то же самое, что и Firefox. Я не проверял это на других браузерах, таких как Opera, но я предполагаю, что есть расхождения.
Мой вопрос:
i. какой из них правильный?
Edit: по общему согласию (и руководящим принципам ECMAScript) мы предполагаем, что IE снова виноват.
ii. Есть ли еще какие-либо подобные Javascript браузерные причуды, которых я должен опасаться?
Edit: Да, есть множество причуд Javascript. www.quirksmode.org -хороший ресурс для того же самого.
раздел III. Как избежать таких ошибок, как эти?
Edit: используйте JSLint для проверки вашего javascript. Или используйте некоторые внешние библиотеки . Или санируйте свой код.
Спасибо DamienB , JasonBunting, Джону и Конраду Рудольфам за их вклад.
SimpleModal Break ASP.Net Postbacks
Я использую jQuery и SimpleModal в проекте ASP.Net, чтобы сделать несколько хороших диалогов для веб-приложения. К сожалению, любые кнопки в модальном диалоге больше не могут выполнять свои обратные вызовы, что на самом деле неприемлемо.
Есть один источник, который я нашел с обходным путем, но за всю свою жизнь я не могу заставить его работать, главным образом потому, что я не полностью понимаю все необходимые шаги.
У меня также есть обходной путь, который должен заменить обратную связь, но он уродлив и, вероятно, не самый надежный. Мне бы очень хотелось, чтобы эти постбэки снова заработали. Есть какие-нибудь идеи?
UPDATE: я должен уточнить, что обратные сообщения не работают, потому что Javascript, используемый для выполнения обратных сообщений, каким-то образом сломался, поэтому при нажатии на кнопку ничего не происходит.
Достаточно ли использовать обфускатор для защиты моего кода JavaScript?
Я работаю над созданием инструмента разработки, который написан на JavaScript.
Это не будет проект с открытым исходным кодом и будет продаваться (надеюсь) как коммерческий продукт.
Я ищу лучший способ защитить свои инвестиции. Достаточно ли использовать обфускатор (code mangler) для разумной защиты кода?
Есть ли другие альтернативы, о которых я не знаю?
(Я не уверен, что obfuscator-это правильное слово, это одно из приложений, которое берет ваш код и делает его очень нечитаемым.)
Как поддерживать правильное событие Javascript после использования cloneNode (true)
У меня есть элемент формы, который содержит несколько строк входных данных. Подумайте о каждой строке как об атрибутах нового объекта, который я хочу создать в своем веб-приложении. Кроме того, я хочу иметь возможность создавать несколько новых объектов в одном посте HTTP. Я использую встроенный метод Javascript cloneNode (true) для клонирования каждой строки. Проблема в том, что каждая входная строка также имеет ссылку удаления, прикрепленную к ее onclick-событию:
// prototype based
<div class="input-line">
<input .../>
<a href="#" onclick="$(this).up().remove();"> Remove </a>
</div>
При нажатии на ссылку удаления клонированной входной линии также удаляются все входные линии, которые были клонированы из того же объекта dom. Можно ли повторно привязать объект "this" к соответствующему тегу привязки после использования cloneNode (true) на указанном выше элементе DOM?
Подавить диалоговое окно NTLM после несанкционированного запроса
В недавнем проекте sharepoint я реализовал веб-часть аутентификации, которая должна заменить диалоговое окно аутентификации NTLM. Он отлично работает, пока пользователь предоставляет действительные учетные данные. Всякий раз, когда пользователь предоставляет неверные учетные данные, диалоговое окно NTLM появляется в Internet Explorer.
Мой код Javascript, который выполняет аутентификацию через XmlHttpRequest, выглядит следующим образом:
function Login() {
var request = GetRequest(); // retrieves XmlHttpRequest
request.onreadystatechange = function() {
if (this.status == 401) { // unauthorized request -> invalid credentials
// do something to suppress NTLM dialog box...
// already tried location.reload(); and window.location = <url to authentication form>;
}
}
request.open("GET", "http://myServer", false, "domain\\username", "password");
request.send(null);
}
Я не хочу, чтобы диалоговое окно NTLM отображалось, когда пользователь предоставляет недопустимые учетные данные. Вместо этого должна быть выполнена обратная передача с помощью кнопки входа в форму аутентификации. Другими словами, браузер не должен узнать о моем несанкционированном запросе.
Есть ли способ сделать это через Javascript?
Как получить пиксельные координаты (x, y) курсора в текстовых полях?
Я использую jQuery и пытаюсь найти кроссбраузерный способ получить пиксельные координаты каретки в полях <textarea> s и input таким образом, чтобы я мог разместить абсолютно позиционированный div вокруг этого местоположения.
Есть ли какой-нибудь плагин jQuery? Или JavaScript сниппет, чтобы сделать именно это?
Как синхронизировать историю браузера при использовании Ajax?
Я пишу простое приложение для фотоальбома, используя ASP.NET Ajax.
Приложение использует асинхронные вызовы Ajax для предварительной загрузки следующей фотографии в альбом, не изменяя URL в браузере.
Проблема заключается в том, что когда пользователь нажимает кнопку Назад в браузере, приложение не возвращается к предыдущей фотографии, а переходит на домашнюю страницу приложения.
Есть ли способ обмануть браузер, чтобы добавить каждый вызов Ajax в историю просмотров?
Как отправить форму, когда нажата клавиша возврата?
Может ли кто-нибудь сказать мне, как отправить форму HTML, когда нажата клавиша возврата и если в форме нет кнопок? Кнопки "Отправить" там нет . Вместо этого я использую пользовательский div.
Может встречал кто сервис "гостевая книга" или "обратная связь", которые позволяют форму в виде на javascript поставить к себе на сайт
Интересует именно такой вариант! не нужно предлагать написать/установить на свой хост.
Именно сервис!
спасибо за ответы заранее :)
Синтаксис ООП в js и использование prototype
Чем отличаются данные куски кода и какой в каких случаях будет предпочтительнее?
A
function Obj() {}
Obj.method = function(type) {
return this.coords[type];
};
var obj = new Obj(),
current = obj.method(type);
B
function Obj() {}
Obj.prototype.method = function(type) {
return this.coords[type];
};
var obj = new Obj(),
current = obj.method(type);
C
var obj = {
method : function(type) {
return this.coords[type];
}
},
current = obj.method(type);
D
function objMethod(type){
return this.coords[type];
}
var obj = {
method : objMethod
},
current = obj.method(type);
added @ 1732:
E
function Obj() {
this.method = function(type) {
return this.coords[type];
};
}
var obj = new Obj(),
current = obj.method(type);
function Obj() {}
Obj.method = function(type) {
return this.coords[type];
};
var obj = new Obj(),
current = obj.method(type);
function Obj() {}
Obj.prototype.method = function(type) {
return this.coords[type];
};
var obj = new Obj(),
current = obj.method(type);
var obj = {
method : function(type) {
return this.coords[type];
}
},
current = obj.method(type);
function objMethod(type){
return this.coords[type];
}
var obj = {
method : objMethod
},
current = obj.method(type);
function Obj() {
this.method = function(type) {
return this.coords[type];
};
}
var obj = new Obj(),
current = obj.method(type);
Посоветуйте книгу по JavaScript
Посоветуйте бумажную книгу по javascript для углубленного изучения для неновичка (программиста, имеющего опыт с другими языками).
Заказал книгу «Javascript подробное руководство» Дэвида Макфарланда — там оказалась вода про jquery. Ещё попадались варианты, в которых все сильно упрощено (аля для чайников).
Хотелось бы, чтобы в книге были освещены такие моменты, как
типы переменных в js,
понятие прототипа,
наследование,
обратные вызовы,
работа с DOM,
регулярные выражения.
И поменьше примеров на ajax, где приводится листинг серверного кода на десять страниц.
Посоветуйте JavaScript календарь
Из требований:
— Удобная навигация
— Неделя должна начинаться с понедельника
— Русский язык
— Желательно чтоб дата не вставлялась в entry, а щелчок по дате отправлял POST
Искал на файловых помойках, ничего подходящего не нашел :(
Правильное оформление вызова javascript-функций
Как правильно оформлять вызов функции (js) при клике по ссылке, кнопке или любом другом элементе. Давным-давно меня научили писать вызов в onclick(), но я видел несколько других вариантов этого действа.
Поэтому хочется узнать, как же всё-таки наиболее верно это делать?
Cтатус ответа сервер (200, 404, ...) при синхронной загрузке страницы?
Как при помощи javascript узнать статус ответа сервер (200, 404, ...) при первичной синхронной загрузке страницы? Т.е. XMLHttpRequest в данном случае не существует.
Drag'n'drop для динамически созданных элементов (jQuery)?
В jQuery есть такой хороший плагин jQuery UI Draggable, который позволяет создавать эффекты drag'n'drop. Работает он достаточно просто: нужно для любого существующего элемента вызвать метод .draggable():
$('#test').draggable();
Если же попытаться вызвать этот метод для динамически добавленного элемента, то ничего не произойдёт:
$('body').append('<div id="newblock">Новый элемент</div>');
$('#newblock').draggable();
«Новый элемент» не будет обладать возможностью drag'n'drop. Как сделать тут что-то типо аналога функции .live(), чтобы динамически созданные элементы тоже реагировали на эти методы?
$('body').append('<div id="newblock">Новый элемент</div>');
$('#newblock').draggable();
Как масштабировать шрифт, чтобы он занял собой блок целиком?
Успех на Хабре лёгкого стартапа Ты — супер подвиг меня воскресным вечером покопать в направлении своего улучшателя настроения (пользователи IE извините).
Он работает только в разрешении 1280x1024, и для вычисления размера шрифта используется магический код centered.style.fontSize = (900 - 3 * message.length) + '%';. При этом всё равно проблемы, если кто-то пользуется + "+".
А как бы сделать, чтобы размер шрифта подбирался, чтобы заполнить div? Может можно его адаптивно увеличивать и как-то вычислять размер получающегося блока?
Upd. Пришлось самой разбираться. По ссылке всё работает…
Лишняя запятая в JS
Возник спор по поводу ошибки, возникающей в IE, если встречается лишняя запятая в коде.
Ситуация простая:
items: [
{xtype: 'textfield', cls: 'fake-field', value: 'Manager Login'},
new Ext.form.TextField(Ext.applyIf({fieldLabel: 'Username', name: 'login', allowBlank:false}, fieldConfig)),
this.passwordField,
this.passwordConfirmField,
new Ext.form.Hidden({name: 'companyId'}),
]
Если последнюю запятую не убрать — IE не отрабатывает скрипт. Все остальные браузеры отработают на ура.
Вопрос: Кто прав? Кодер и его запятая (вместе со всеми браузерами) или же IE (который не хочет обрабатывать явный промах программиста).
{xtype: 'textfield', cls: 'fake-field', value: 'Manager Login'},
new Ext.form.TextField(Ext.applyIf({fieldLabel: 'Username', name: 'login', allowBlank:false}, fieldConfig)),
this.passwordField,
this.passwordConfirmField,
new Ext.form.Hidden({name: 'companyId'}),
]
[jQuery UI tabs + layout] layout внутри таба на весь экран... как?
Доброго времени суток… Пытаюсь сделать, чтобы внутри одного из табов был сплиттер таким вот образом:
<link type="text/css" rel="stylesheet" href="css/smoothness/jquery-ui-1.8.4.custom.css"/>
<link type="text/css" rel="stylesheet" href="css/jquery-layout.css"/>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"/>
<script type="text/javascript" src="js/jquery-ui-1.8.4.custom.min.js"/>
<script type="text/javascript" src="js/jquery-layout.js"/>
"Content-Type" content="text/html; charset=UTF-8">
ii
<script type="text/javascript">
$(function() {
$("#tabs").tabs();
});
</script>
"tabs">
- "#expertTab">Expert mode
"#userTab">User mode
<script type="text/javascript">
var expertLayout = null;
$(function() {
expertLayout = $("#expertTab").layout({
resizable: true,
closeable: false
});
});
</script>
<div id="expertTab">
<div id="layout1" class="ui-layout-west">
asdf
</div>
<div id="layout2" class="ui-layout-center">
fdsa
</div>
</div>
<div id="userTab"></div>
</div>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
и получаю вот это:
.
Как можно сделать, чтобы табы вместе со своим содержимым были во всю высоту окна браузера?
<link type="text/css" rel="stylesheet" href="css/smoothness/jquery-ui-1.8.4.custom.css"/>
<link type="text/css" rel="stylesheet" href="css/jquery-layout.css"/>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"/>
<script type="text/javascript" src="js/jquery-ui-1.8.4.custom.min.js"/>
<script type="text/javascript" src="js/jquery-layout.js"/>
"Content-Type" content="text/html; charset=UTF-8">
ii
<script type="text/javascript">
$(function() {
$("#tabs").tabs();
});
</script>
"tabs">
- "#expertTab">Expert mode
"#userTab">User mode
<script type="text/javascript">
var expertLayout = null;
$(function() {
expertLayout = $("#expertTab").layout({
resizable: true,
closeable: false
});
});
</script>
<div id="expertTab">
<div id="layout1" class="ui-layout-west">
asdf
</div>
<div id="layout2" class="ui-layout-center">
fdsa
</div>
</div>
<div id="userTab"></div>
</div>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
Cтатус ответа сервер (200, 404, ...) при синхронной загрузке страницы?
Как при помощи javascript узнать статус ответа сервер (200, 404, ...) при первичной синхронной загрузке страницы? Т.е. XMLHttpRequest в данном случае не существует.
Drag'n'drop для динамически созданных элементов (jQuery)?
В jQuery есть такой хороший плагин jQuery UI Draggable, который позволяет создавать эффекты drag'n'drop. Работает он достаточно просто: нужно для любого существующего элемента вызвать метод .draggable():
$('#test').draggable();
Если же попытаться вызвать этот метод для динамически добавленного элемента, то ничего не произойдёт:
$('body').append('<div id="newblock">Новый элемент</div>');
$('#newblock').draggable();
«Новый элемент» не будет обладать возможностью drag'n'drop. Как сделать тут что-то типо аналога функции .live(), чтобы динамически созданные элементы тоже реагировали на эти методы?
$('body').append('<div id="newblock">Новый элемент</div>');
$('#newblock').draggable();
Как масштабировать шрифт, чтобы он занял собой блок целиком?
Успех на Хабре лёгкого стартапа Ты — супер подвиг меня воскресным вечером покопать в направлении своего улучшателя настроения (пользователи IE извините).
Он работает только в разрешении 1280x1024, и для вычисления размера шрифта используется магический код centered.style.fontSize = (900 - 3 * message.length) + '%';. При этом всё равно проблемы, если кто-то пользуется + "+".
А как бы сделать, чтобы размер шрифта подбирался, чтобы заполнить div? Может можно его адаптивно увеличивать и как-то вычислять размер получающегося блока?
Upd. Пришлось самой разбираться. По ссылке всё работает…
Лишняя запятая в JS
Возник спор по поводу ошибки, возникающей в IE, если встречается лишняя запятая в коде.
Ситуация простая:
items: [
{xtype: 'textfield', cls: 'fake-field', value: 'Manager Login'},
new Ext.form.TextField(Ext.applyIf({fieldLabel: 'Username', name: 'login', allowBlank:false}, fieldConfig)),
this.passwordField,
this.passwordConfirmField,
new Ext.form.Hidden({name: 'companyId'}),
]
Если последнюю запятую не убрать — IE не отрабатывает скрипт. Все остальные браузеры отработают на ура.
Вопрос: Кто прав? Кодер и его запятая (вместе со всеми браузерами) или же IE (который не хочет обрабатывать явный промах программиста).
{xtype: 'textfield', cls: 'fake-field', value: 'Manager Login'},
new Ext.form.TextField(Ext.applyIf({fieldLabel: 'Username', name: 'login', allowBlank:false}, fieldConfig)),
this.passwordField,
this.passwordConfirmField,
new Ext.form.Hidden({name: 'companyId'}),
]
[jQuery UI tabs + layout] layout внутри таба на весь экран... как?
Доброго времени суток… Пытаюсь сделать, чтобы внутри одного из табов был сплиттер таким вот образом:
<link type="text/css" rel="stylesheet" href="css/smoothness/jquery-ui-1.8.4.custom.css"/>
<link type="text/css" rel="stylesheet" href="css/jquery-layout.css"/>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"/>
<script type="text/javascript" src="js/jquery-ui-1.8.4.custom.min.js"/>
<script type="text/javascript" src="js/jquery-layout.js"/>
"Content-Type" content="text/html; charset=UTF-8">
ii
<script type="text/javascript">
$(function() {
$("#tabs").tabs();
});
</script>
"tabs">
- "#expertTab">Expert mode
"#userTab">User mode
<script type="text/javascript">
var expertLayout = null;
$(function() {
expertLayout = $("#expertTab").layout({
resizable: true,
closeable: false
});
});
</script>
<div id="expertTab">
<div id="layout1" class="ui-layout-west">
asdf
</div>
<div id="layout2" class="ui-layout-center">
fdsa
</div>
</div>
<div id="userTab"></div>
</div>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
и получаю вот это:
.
Как можно сделать, чтобы табы вместе со своим содержимым были во всю высоту окна браузера?
<link type="text/css" rel="stylesheet" href="css/smoothness/jquery-ui-1.8.4.custom.css"/>
<link type="text/css" rel="stylesheet" href="css/jquery-layout.css"/>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"/>
<script type="text/javascript" src="js/jquery-ui-1.8.4.custom.min.js"/>
<script type="text/javascript" src="js/jquery-layout.js"/>
"Content-Type" content="text/html; charset=UTF-8">
ii
<script type="text/javascript">
$(function() {
$("#tabs").tabs();
});
</script>
"tabs">
- "#expertTab">Expert mode
"#userTab">User mode
<script type="text/javascript">
var expertLayout = null;
$(function() {
expertLayout = $("#expertTab").layout({
resizable: true,
closeable: false
});
});
</script>
<div id="expertTab">
<div id="layout1" class="ui-layout-west">
asdf
</div>
<div id="layout2" class="ui-layout-center">
fdsa
</div>
</div>
<div id="userTab"></div>
</div>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
Существует ли в природе form-builder (PHP) + validator (client+server) в одном флаконе?
Существует ли гибкий form-builder (PHP), позволяющий одновременно назначать правила для серверной и клиентской валидации?
Собственно вопрос о том, чтобы не повторять одну и ту же работу два раза, в частности на хабре уже была попытка осмысления этой проблемы и предложен один из выходов (вернее его прообраз) и как там правильно заметили:
основная мысль — генерация клиентской валидации на сервере
Например, для клиентской валидации и построения всяких вкусностей типа повторяющиеся блоки (к примеру zforms.ru/docs/repeatable-model/) есть красивые решения типа zforms.ru/ от разработчика интерфейсов компании Яндекс Дмитрия Филатова
Да и просто, для валидации полно плагинов с использованием jQuery.
В конце концов есть Vanadium: семантическая валидация на клиенте
Для построения форм и серверной валидации есть замечательная библиотека Алексея Борзова и, как поправил меня сам Алексей, — Bertrand Mansion: HTML_QuickForm2.
Есть первая версия HTML_QuickForm, которая позволяет делать то, что требуется, т.е. строить формы и на основании запрашиваемых правил серверной валидации на лету генерировать правила клиентской валидации, но у нее есть огромный минус — невозможность простыми способами строить сложные формы, т.е. когда требуется например группу полей добавлять в группу, зато ей очень хорошо удаются плоские формы.
Дмитрий Филатов на мой вопрос есть ли обертка для построения таких форм ответил мне в МоёмКруге:
Есть не обертка на PHP, а xml-описание правил валидации, из которого строится с помощью xsl клиентский код и которое может быть использовано для серверной валидации.
Алексей Борзов на вопрос о дальнейшей судьбе HTML_QuickForm2 ответил:
HTML_QuickForm2 в альфе потому, что опять же недописана функциональность (а именно интеграция с жаваскриптом). Но в отличие от старой версии он почти на 100% покрыт тестами и по стабильности явно не хуже...
Другими словами, есть дикое желание подружить HTML_QuickForm2 и zforms.ru, но перед этим хотел бы поинтересоваться у «ленивых программистов», как они борются с ленью при построении форм и двойной работой по проверке вводимых данных?
update: вопрос решил путем запуска проекта jquickform.ru/
Где хранятся локальные переменные в javascript?
Я знаю, что когда в javascript создается глобальная переменная, то она становится свойством объекта window и к ней через него соответственно можно обратиться: window.var. Я никак не могу понять, свойствами чего становятся локальные переменные, объявленные в теле функции? Где они хранятся и как к ним получить доступ?
Контроль состояния прозрачности JavaScript
Доброе утро, хабр!
Задача, что стоит передо мной проста и стара как мир — анимационная смена одной картинки другой при наведении мышки. Картинки имеют одинаковые размеры, одна — просто кнопка, другая — кнопка со «свечением»(hover state), кнопки абсолютно позиционированны и находятся «друг в друге». В примитиве задача решается такими строками кода на jQuery:
$('div#left ul li').css({opacity: 0.0});
$('div#left ul li:first').css({opacity: 1.0});
$("div#left li").mouseover(function () {
$('div#left ul li:first').animate({opacity: 0.0}, 1000);
$('div#left ul li:last').animate({opacity: 1.0}, 1000);
});
$("div#left li").mouseout(function () {
$('div#left ul li:first').animate({opacity: 1.0}, 1000);
$('div#left ul li:last').animate({opacity: 0.0}, 1000);
});
Но у данного подхода есть 1 большая проблема — события вызываются и ставятся в очередь вне зависимости от текущего состояния элемента, то есть несколько наведений мышки на элемент вызывают «перемигивание» элемента. Вопрос состоит в том, как отследить текущее состояние элемента и тем самым не включать его обработку, если в данный момент прозрачность картинки изменяется?
$('div#left ul li:first').css({opacity: 1.0});
$("div#left li").mouseover(function () {
$('div#left ul li:first').animate({opacity: 0.0}, 1000);
$('div#left ul li:last').animate({opacity: 1.0}, 1000);
});
$("div#left li").mouseout(function () {
$('div#left ul li:first').animate({opacity: 1.0}, 1000);
$('div#left ul li:last').animate({opacity: 0.0}, 1000);
});
Подскажите хороший html5 аудиоплеер
Хотел реализовать для своего сайта воспроизведение аудио без флеша, но хорошего инструмента работающего с плейлистами и имеющего достаточное большое колличество настроек не нашел.
Нужно что-то напоминающее prostopleer и www.plusmusica.com/
Chrome заблокировал JS для localhost
Собственно, ситуация такая — если я правильно понял, произошло это после того, как в JS-коде я случайно устроил замкнутый цикл по невнимательности. Chrome грузил страничку меньше пары секунд, сразу выдал сообщение о бесконечном редиректе. После устранения бага попытался вновь загрузить страницу и… Оказалось, что Chrome заблокировал исполнение JS на этой странице (localhost). Вот такой значок появился справа в адресной строке:

При нажатии появляется такое меню:

Но во всех настрйках (включая это самое меню) стоит «разрешить JS».
При перезагрузке Chrome можно наблюдать такое уведомление: скрин
При этом содержимое JS-файла абсолютно неважно, хоть полноценное приложение, хоть 1 строка alert(1);
Кто с таким сталкивался? Что это такое?
P.S.: в других браузерах все ок.
Как сохранить HTML-страницу сгенерированную на JavaScript?
Встречаются страницы, на которых есть динамические части получаемые Ajax или попросту какими-то функция Javascript (например, шаблонизаторами).
Так вот как сохранить скомпилированную страницу, т.е. со всеми выполненными js-функциями? В случае с Ajax скачивание может происходить через некоторое время после загрузки DOM-модели.
Решение желательно на ЯВУ (лучше C#) или через консоль Windows/Linux.
Например, нужно скачать вот эту forexite: Календарь на неделю.
jQuery — выбрать элементы только с определенным набором классов
Возможно глупый вопрос, но я что-то не могу разобраться.
Есть 3 блока с классом .one и один блок с классом .one и .two
Как мне в jQuery выбрать только элемент у которого есть оба класса .one и .two?
Ищем Open Source Orphus
Хочется скрипт для рецензирования статей в Блоггере по аналогии с Orphus и сайтом Леонида Каганова. Чтобы такой скрипт легко встраивался в любой сайт, желательно, чтобы он был на чистом javascript.
Результаты проверки хорошо бы записывать в комментарии к записи, отправлять GET запросом на другой сайт, помещать в Google forms или ещё куда-нибудь. Если записывать замечания в комментарии, то можно потом подрисовывать эти комментарии прямо на том месте, к которому они относятся.
От какого хорошего свободного инструмента оттолкнуться? Получилось найти только плагин для Joomla joomlaforum.ru/index.php/topic%2c12663.0/topicseen.html
Может есть какой-то плагин к jquery? Как-то такая-же функциональность работает на сайте госуслуг?
www.gosuslugi.ru/ru/: Если вы обнаружили неточности в опубликованной информации, просьба оперативно сообщить об этом оператору портала. Выделите некорректный текст и нажмите клавиши CTRL+ENTER. Сведения об ошибках будут оперативно переданы в ведомство, разместившее информацию.
Есть ли люди на Хабре, разбирающиеся в document.on<событие> и в bloggerService.insertEntry, чтобы самим написать подобную библиотеку?
Много материалов по теме можно найти по ссылкам, но как-то мне это особенно не помогло
habrahabr.ru/search/?q=orphus
www.google.ru/search?q=%22ctrl%2Benter%22
Необычное использование побитового XOR в Javascript?
Привет.
Отлаживая недавно очередной кусок чужого кода наткнулся на такой цикл:
while (--i ^ -1) /* тело цикла */;
при этом, изначально i равно некоторому положительному числу. То есть, побитовый оператор используется здесь для целых чисел. Немного подумав, я понял, что результат побитового XOR обратится в нуль единственно в случае, когда числа равны. Тогда условие кастуется в true. В противном случае, будет не-ноль, что кастуется в false.
Получается, можно использовать побитовый XOR вместо оператора != (если мы заранее знаем, что сравниваемые величины суть числа).
Отсюда у меня возник вопрос, который я хочу поставить перед аудиторией.
Почему автор использует XOR?
Вчера весь вечер я размышлял над этим и наиболее правдоподобной причиной мне показалось желание написать «крутой непонятный код». Сразу вспомнилось, как я, когда начинал постигать азы программирования, вдруг обнаружил, что могу писать «лаконичный код, который сложен для понимания и который работает». Мне казалось, что это свидетельствует о каких-то скиллах. На самом деле, понятно, что это свидетельствует об обратном. В пользу этой гипотезы было ещё то, что весь остальной код в окрестности приведённого фрагмента был написан подобным образом.
Правда, мне не давала покоя ещё одна мысль. Я представил себе, что если бы я хотел усложнить код, мне бы почему-то не пришло в голову использовать XOR, даже если бы я и знал о такой возможности.
В результате (безуспешно пытаясь заснуть на протяжение двух часов :) ), я встал, подошёл к компу и написал скриптик, который делал много сравнений тем и иным способом и мерял время.
Оказалось, что если использовать побитовый XOR вместо !=, появляется прирост в производительности (по крайней мере на Firefox), этот прирост стабильный (то есть он есть всегда, то больше, то меньше), но составляет всего лишь около 1%.
Может быть, есть ещё какие-нибудь особенности, дающие преимущество побитовому XOR?
AJAX запрос в jQuery. Как избавится от заголовка Access-Control-Request-Headers?
Здравствуйте. Надо при помощи javascript'а вытянуть данные из xml-файла генерирующегося на удалённом сервере. Всё до чего смог додуматься — сделать ajax запрос к xml-файлу.
Но jQuery вместо GET-запроса отправляет OPTIONS-запрос.
Оказалось, что этот запрос отсылается Firefox'ом в случае cross-domain request, когда отправляются нестандартные заголовки. В случае с jQuery это кажется:
Access-Control-Request-Headers: x-requested-with
Как избавиться от этого заголовка? Или может есть другие способы вытянуть информацию из xml?
JavaScript, фреймворки и парадигмы?
Посоветуйте Javascript framework для разработки интерфейса администрирования со сложными формами. Работающий прототип я сделал с использованием jQuery и десятка плагинов (tabs, drag&drop, ajax file upload, data link, mousewheel, hotkeys...). Но сейчас нужно дополнить интерфейс всеми необходимыми полями, и я понимаю, что приходится копировать очень много кода, а идентификаторы полей разбросаны по всему скрипту. Нужна подходящая парадигма программирования. Думаю, ее может дать какой-то легкий framework.
Посмотрел DoJo. Там, конечно, есть все необходимое. Но у меня сейчас нет месяца на изучение этой системы. К тому же, у нашей системы администрирования такой дизайн, что не удастся использовать готовые визуальные компоненты, которые DoJo предоставляет. Поэтому весь смысл теряется. Примерно та же история и с YUI.
Нужен инструмент, который будет управлять взаимодействием готовых визуальных элементов (которые написаны с использованием большого количества jQuery и плагинов).
С сервера я получаю большой json, в котором разложены все необходимые данные редактируемого объекта. Еще есть несколько дополнительных json-объектов со значениями для всяких выпадающих списков и форм с автоподстановкой. Вернуть нужно json с такой же структурой. Внутри форм активно используется drag&drop. Никаких перезагрузок страницы не происходит.
Ссылки на примеры хороших интерфейсов тоже были бы полезны. Спасибо.
Логотип JavaScript
Существует ли официальный логотип Javascript? Где взять достойную иконку для обозначения JS?
Как бы собрать в табличку все блог-платформы?))
Хочется собрать список блог-платформ — мне кажется это интересно будет. может кто-то видел такие списки уже? Нужны не программные платформы, а именно сервисы, вроде: ЖЖ, Wordpress, BlogSpot.
Принцип отбора предлагаю установить один: текстовость. То есть есть Youtube можно тоже с натяжкой назвать блог-сервисом, но мультимедийным. А интересуют именно текстовые блоги, микроблоги, с социальными фичами и без, западные и наши.
Давайте соберем? Круто было бы указывать: платность/бесплатность, наличие русскогоязычного интерфейса.
1. Livejournal.com
2. Wordpress.com
3. Blogspot.com
4. Typepad.com
5. Blogger.com
6. Блоги@mail.ru (прости, господи)
7. Liveinternet.ru (прости-прости)
8. Twitter.com
9. insanejournal.com — почерпнуто из статьи на mashable — не знал, оказывается жж строился на открытой платформе Danga и этот вот инсейн тоже на ней и
10. journalfen.net — тоже на ней эти два, наверно, шутки ради… но все-таки.
11. Tumblr.com
12. vox.com — сдох, мир его праху
13. xanga.com — блогокоммюнити)) кто бы знал
Что еще?
Удобный трединг в Javascript?
Приветствую.
На самом деле, речь не совсем о трединге. Да, в Javascript «чистого» трединга вроде как нету, но есть ещё webworkers, это я знаю, а здесь я хочу поднять вопрос о другом. Для начала я уточню, что конкретно я буду подразумевать под «тредингом».
Типичная задача следующая. Есть некий код (для определённости, врапнутый в функцию myFunc) и я хочу запустить этот код неким вызовом, но при этом не дожидаясь завершения этого вызова перейти к следующей строке кода, откуда я этот вызов совершаю. Обычно эта задача решается примерно таким образом:
setTimeout( myFunc, 10 );
doSomethingElse();
где myFunc() содержит код, который я хочу выполнить «в треде», а doSomethingElse() содержит код, про который я хочу чтобы он начал выполняться, не дожидаясь завершения myFunc(). А если мне нужно вызвать функцию myFunc() как метод объекта — я могу заюзать замыкание и apply(), обернув это в ещё одну анонимную функцию.
Самое загадочное в таком подходе — второй аргумент функции setTimeout(). Почему я сказал ей выполнить код через 10 милисекунд, а не сразу — через 0? Люди пишут (комменты), что setTimeout(fn, 0) часто работает дольше, чем setTimeout(fn, 10). И там же предлагается ещё более быстрый способ «заказать» асинхронное выполнение функции «прямо сейчас», с использованием postMessage.
Я решил немного поэкспериментировать с приведённым там кодом и сделать его чуть более удобным. Идея состоит в том, что прототипу объекта типа Function добавляется новый метод thread(), который запускает эту функцию асинхронно и форвардит ей все аргументы. Получилось примерно так:
(function() {
var threads = [];
var messageName = "start-thread";
function thread(fn) {
threads.push(fn);
window.postMessage(messageName, "*");
}
function startThread(event) {
if (event.source == window &&
event.data == messageName) {
event.stopPropagation();
if (threads.length> 0) {
( threads.shift() )();
}
}
}
window.addEventListener("message", startThread, true);
Function.prototype.thread = function() {
var args = arguments;
var me = this;
thread(
function() {
me.apply( null, args );
}
);
}
})();
var doSomething = function(a, b) {
alert( a + b );
}
// вызываем doSomething() асинхронно:
doSomething.thread( 2, 3 );
В общем, это практически точная копия кода по ссылке, плюс новый метод thread объектам типа Function.
И теперь внимание вопрос. Для того, чтобы метод thread был действительно удобным, нужно иметь возможность использовать его для методов объектов. То есть, каким-то образом в функцию thread нужно «протащить» информацию об объекте, в контексте которого мы обратились к методу. Использование замыкания напрочь испортит всю элегантность. Хочется пользоваться этим методом примерно так:
myObject.myMethod.thread( arg1, arg2 );
и в результате такого вызова метод myMethod должен вызваться асинхронно в контексте объекта myObject, то есть должно произойти
myObject.myMethod.apply( myObject, [ arg1, arg2 ] );
Возможно ли это?
setTimeout( myFunc, 10 );
doSomethingElse();(function() {
var threads = [];
var messageName = "start-thread";
function thread(fn) {
threads.push(fn);
window.postMessage(messageName, "*");
}
function startThread(event) {
if (event.source == window &&
event.data == messageName) {
event.stopPropagation();
if (threads.length> 0) {
( threads.shift() )();
}
}
}
window.addEventListener("message", startThread, true);
Function.prototype.thread = function() {
var args = arguments;
var me = this;
thread(
function() {
me.apply( null, args );
}
);
}
})();
var doSomething = function(a, b) {
alert( a + b );
}
// вызываем doSomething() асинхронно:
doSomething.thread( 2, 3 );myObject.myMethod.apply( myObject, [ arg1, arg2 ] );
Отправка страницы на печать и .htc глюк.
Проблема в следующем: когда нажимаю на ссылку
PRINT
(сайт goo.gl/adi3)
в ИЕ7 выдается ошибка скрипта:
Ошибка: Arg illegal input string in Vector2D
URL: www.art-welly.com/assets/css/pie.htc
кто сталкивался с такой проблемой и как ее можно решить?
URL: www.art-welly.com/assets/css/pie.htc
Проблемы с созданием иерархического дерева на jQuery?
Пытаюсь сделать для одного из своих проектов «иерархическое дерево» (по сути аналог jQuery Treeview, jsTree и тому подобных плагинов), в котором также задействован функционал drag & drop. Для задействования возможности drag & drop использую jQuery UI. Всё вроде получается, но застопорился на одном моменте.
Лирическое отступление: да, я знаю что это по сути написание велосипеда, и что можно не париться и взять один из распространённых плагинов, но для меня важно научиться делать разные фишки на jQuery с drag & drop, потому что он ещё много где нужен будет в моём проекте.
Значит что имеем. Есть ненумерованный список <ul></ul> элементы которого представляют собой категории. У категорий могут быть подкатегории, а у тех, в свою очередь, свои подкатегории и т.д. Если у категории есть подкатегории, то слева от неё отображается иконка «плюсик», нажав на который, произойдёт запрос на сервер и в ответ мы получим необходимый список подкатегорий, который автоматически вставится в виде подсписка, т.е. вот так:
<ul>
<li class="categories close" id="cat1" rel="1">category A</li>
<li class="categories open" id="cat2" rel="2">category B</li>
<ul id="p2">
<li class="categories" id="cat4" rel="4">subcategory D</li>
<li class="categories" id="cat5" rel="5">subcategory E</li>
<li class="categories" id="cat6" rel="6">subcategory F</li>
</ul>
<li class="categories close" id="cat3" rel="3">category C</li>
</ul>
Лирическое отступление: да, я знаю что по правилам синтаксиса HTML подсписок <ul id=«p2»></ul> должен находится внутри родительского элемента <li></li>, но в таком случае вместе с категорией «category B» будет таскаться за курсором и весь подсписок подкатегорий, чего мы никак не хотим.
С помощью jQuery UI я делаю каждый элемент <li></li> «перетаскиваемым» (draggable), и одновременно «принимающим» (droppable).
Дальше я по задумке хочу сделать следующим образом: пользователь захватывает и начинает «таскать» категорию над списком других категорий; как только таскаемый им элемент оказывается над одной из категорий, происходит запрос на сервер, мы получаем и вставляем список подкатегорий. Делается это для того, чтобы облегчить жизнь пользователю: если пользователь хочет сделать категорию «category C» подразделом «subcategory F», то ему будет достаточно захватить «category C», задержать её над «category B» чтобы открылся список подкатегорий, после чего перетащить и отпустить над «subcategory F».
Всё вроде получается отлично, но есть одно НО, на котором я и застопорился: пользователь захватывает «category C» и держит её над «category B», тем самым заставляя открытся список подкатегорий; в момент появления списка подкатегорий, удерживаемый элемент «category C» уезжает вниз относительно курсора ровно на высоту всего подсписка категорий. Именно эту проблему мне не удаётся пока побороть.
Как я пытался решить эту проблему:
1) в момент вызова функции over (вызывается когда draggable-элемент находится над droppable-элементом и находится в состоянии готовности) пробовал запоминать позицию перетаскиваемого элемента в глобальных переменных вот так:
...
over:function(event,ui) {
_cury = ui.position.top;
_curx = ui.position.left;
...
}
...
после этого запрашивать список подкатегорий и уже после их вставки заново присваивать перетаскиваемому элементу координаты:
...
ui.position.top = _cury;
ui.position.left = _curx;
...
В итоге не сработало.
2) я подумал, что возможно в момент появления подсписка и соответственно «отпрыгивания» перетаскиваемого элемента, он уходит из состояния готовности и вызывается функция out. Тогда я просто перенёс задание запомненных координат в функцию out:
...
out:function(event,ui) {
ui.position.top = _cury;
ui.position.left = _curx;
...
}
...
Это тоже не сработало. Также пробовал использовать ui.offset вместо ui.position — тоже не помогло. Т.е. получение координат перетаскиваемого элемента происходит нормально, корректно. А вот попытка задать их обратно не приводит ни к каким результатам. Может кто подскажет решение?
Скачать полный код примера со всеми файлами и подробными комментариями.
Смотреть пример онлайн.
<ul>
<li class="categories close" id="cat1" rel="1">category A</li>
<li class="categories open" id="cat2" rel="2">category B</li>
<ul id="p2">
<li class="categories" id="cat4" rel="4">subcategory D</li>
<li class="categories" id="cat5" rel="5">subcategory E</li>
<li class="categories" id="cat6" rel="6">subcategory F</li>
</ul>
<li class="categories close" id="cat3" rel="3">category C</li>
</ul>...
over:function(event,ui) {
_cury = ui.position.top;
_curx = ui.position.left;
...
}
......
ui.position.top = _cury;
ui.position.left = _curx;
......
out:function(event,ui) {
ui.position.top = _cury;
ui.position.left = _curx;
...
}
...
JavaScript: объясните return в конструкторе
Объясните, пожалуйста, в чем разница между кодом:
var Test = (function () {
return (function () {
this.qqq = 'a';
});
})();
alert(new Test().qqq);
и
var Test = (function () {
return (function () {
return ({ qqq : 'a' });
});
})();
alert(new Test().qqq);
В обоих вариантах выводится «а». Почему в первом случае — понятно. Первая функция создает замыкание, в которое можно поместить «статические» переменные. Вторая — собственно конструктор и в конструкторе задается объект. Но почему во втором?
Спасибо.
return (function () {
this.qqq = 'a';
});
})();
alert(new Test().qqq);
return (function () {
return ({ qqq : 'a' });
});
})();
alert(new Test().qqq);
Как заставить браузер не кешировать JavaScript?
Существует ли какой-то действенный способ заставить браузер не кешировать конкретный Javascript файл? Желательно чтобы этот способ работал в Firefox, Opera и Chrome (IE особо не интересует).
Оставлять логику PHP или отдавать JavaScript'у?
Пишу тизерную сеть и немного мучаюсь в сомнениях:
на рекламной площадке размещается код типа <script type=«text/javascript» src=«someurl.com/site_id/block_id»></script>
который, разумеется, подгружает уже полный JS-код для генерации тизерного блока.
Вот я и думаю — передавать клиенту уже отрендеренный блок (логика в php), или отдавать только данные блока в, например, JSON-формате, а рендерить его средствами JS (логика в JS)?
Vkontakte open api и проблема с правами?
Никак не могу разобраться как выставить права приложению. Вроде бы все просто:
Подключаем в хедере
<script src="http://vk.antizapret.ru/js/api/xd_connection.js?2" type="text/javascript"></script><br/>
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript"></script><br/>
Далее пишем в body
<script type="text/javascript"><br/>
<br/>
VK.init({<br/>
apiId: my_id<br/>
});<br/>
<br/>
VK.UI.button('login_button');<br/>
<br/>
VK.callMethod('showInstallBox',0);<br/>
</script><br/>
<br/>
Авторизация проходит нормально, все апи через VK.api выполняются нормально, но как только хочу вызвать showInstallBox появляется ошибка
TypeError: Result of expression 'options' [undefined] is not an object. vkontakte.ru/js/api/openapi.js:317
Так же пробовал вызывать по onClick, после полной загрузки страницы, то же самое.
Что я делаю не так? Может что-то не подключил? Может не так вызываю?
Заранее благодарю.
<script src="http://vk.antizapret.ru/js/api/xd_connection.js?2" type="text/javascript"></script><br/>
<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript"></script><br/><script type="text/javascript"><br/>
<br/>
VK.init({<br/>
apiId: my_id<br/>
});<br/>
<br/>
VK.UI.button('login_button');<br/>
<br/>
VK.callMethod('showInstallBox',0);<br/>
</script><br/>
<br/>TypeError: Result of expression 'options' [undefined] is not an object. vkontakte.ru/js/api/openapi.js:317
Что означает контрукция типа “(function(d){ ... })(document)”
Неоднократно встречал подобную контструкцию:
(function (d) {
// Какой-то код
})(document);
Мне понятно, что данном коде используется замыкание, но не понятно зачем в качестве аргумента замкнутой функции передаёться объект Document.
Вот конкретный пример — маленькая Javascript утилита, которая далает так, чтобы в IE можно было задавать стили HTML5 элементам (таким как section, header, article и прочие; по умолчанию стили для этих элементов в IE будут игнорироваться). В этом скрипте используется следующая конструкция:
(function (p, e) {
// Какой-то код
})(this, document);
В этом примере помимо аргумента document ещё в добавок передаётся аргумент this, в котором, как я понимаю, хранится объект Window. Кто может мне подсказать зачем замкнутым функциям передавать в качастве аргуметов Document и Window?
// Какой-то код
})(document);
// Какой-то код
})(this, document);
Материалы по работе с JS в IE
Доброго дня!
Подскажите, пожалуйста, может есть книга какая, или ресурс, где была бы собрана воедино вся информация (ну вернее как можно больше) по написанию кроссбраузерного JS. А то все, что нахожу, как бы гордо себя ни позиционировало — обычно очередной копипаст одних и тех же «трюков». Причем интересуют материалы не по JS в целом, а именно те материалы, где рассказывается, как в IE делать нельзя, а как делать можно только в IE :)
Где найти стандарт работы getElementById?
В общем вопрос простой. Почему, при добавлении в документ 2х элементов с одним id, берется первый элемент, а не второй?
PS Понимаю что за это надо руки отрывать, но всё-же…
<font color="black"><font color="#0000ff"><</font><font color="#800000">html</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">head</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">title</font><font color="#0000ff">></</font><font color="#800000">title</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">script</font> <font color="#ff0000">type</font><font color="#0000ff">="text/javascript"</font><font color="#0000ff">></font><br/>
<font color="#0000ff">function</font> ondivclick() {<br/>
<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"place"</font>).innerHTML += <font color="#A31515">"1"</font>;<br/>
<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"place"</font>).innerHTML += <font color="#A31515">"2"</font>;<br/>
alert(<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"divid"</font>).innerHTML); <font color="#008000">// тут на всех браузерах будет 1</font><br/>
}<br/>
<font color="#0000ff"></</font><font color="#800000">script</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">head</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">body</font><font color="#0000ff">></font> <br/>
<font color="#0000ff"><</font><font color="#800000">a</font> <font color="#ff0000">href</font><font color="#0000ff">="#"</font> <font color="#ff0000">onclick</font><font color="#0000ff">="ondivclick()"</font><font color="#0000ff">></font>Go!<font color="#0000ff"></</font><font color="#800000">a</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">div</font> <font color="#ff0000">id</font><font color="#0000ff">="place"</font><font color="#0000ff">></</font><font color="#800000">div</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">body</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">html</font><font color="#0000ff">></font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>
<font color="black"><font color="#0000ff"><</font><font color="#800000">html</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">head</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">title</font><font color="#0000ff">></</font><font color="#800000">title</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">script</font> <font color="#ff0000">type</font><font color="#0000ff">="text/javascript"</font><font color="#0000ff">></font><br/>
<font color="#0000ff">function</font> ondivclick() {<br/>
<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"place"</font>).innerHTML += <font color="#A31515">"1"</font>;<br/>
<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"place"</font>).innerHTML += <font color="#A31515">"2"</font>;<br/>
alert(<font color="#0000ff">document</font>.getElementById(<font color="#A31515">"divid"</font>).innerHTML); <font color="#008000">// тут на всех браузерах будет 1</font><br/>
}<br/>
<font color="#0000ff"></</font><font color="#800000">script</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">head</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">body</font><font color="#0000ff">></font> <br/>
<font color="#0000ff"><</font><font color="#800000">a</font> <font color="#ff0000">href</font><font color="#0000ff">="#"</font> <font color="#ff0000">onclick</font><font color="#0000ff">="ondivclick()"</font><font color="#0000ff">></font>Go!<font color="#0000ff"></</font><font color="#800000">a</font><font color="#0000ff">></font><br/>
<font color="#0000ff"><</font><font color="#800000">div</font> <font color="#ff0000">id</font><font color="#0000ff">="place"</font><font color="#0000ff">></</font><font color="#800000">div</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">body</font><font color="#0000ff">></font><br/>
<font color="#0000ff"></</font><font color="#800000">html</font><font color="#0000ff">></font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>
Изменение стиля при помощи javascript
Кто может подсказать как решить задачку
есть 5 блоков div у каждого свой id и стиль b-img
<div id="1" class="b-img" onclick="kodimg(id)">...</div>
<div id="2" class="b-img" onclick="kodimg(id)">...</div>
<div id="3" class="b-img" onclick="kodimg(id)">...</div>
<div id="4" class="b-img" onclick="kodimg(id)">...</div>
<div id="5" class="b-img" onclick="kodimg(id)">...</div>
при клике по нему ява скрипт меняет ему стиль на v-img
вот такой функцией
function kodimg(id)
{
document.getElementById(id).className = 'v-img';
}
проблема в том, что у предыдущего нажатого div стиль остается v-img, а нужно чтоб он снова стал b-img
Как такое можно сделать?
<div id="1" class="b-img" onclick="kodimg(id)">...</div>
<div id="2" class="b-img" onclick="kodimg(id)">...</div>
<div id="3" class="b-img" onclick="kodimg(id)">...</div>
<div id="4" class="b-img" onclick="kodimg(id)">...</div>
<div id="5" class="b-img" onclick="kodimg(id)">...</div>
function kodimg(id)
{
document.getElementById(id).className = 'v-img';
}
Как растянуть изображение на канве *без* сглаживания (в webkit)
Надо увеличить изображение в 2, 3, 4 и т.д. раз, причём, чтоб сохранялась пикселизация.
Что пробовал:
1) через css увеличить размер канвы. +) быстро -) есть сглаживание
2) mozImageSmoothingEnabled=false; drawImage(...). +) бысто, без сглаживания -) gecko only
3) getImageData/putImageData и увеличение руками. +) без сглаживания -) очевидно, медленней чем нативные методы.
Использую способ №3, в моём случае (раз-loop-ленные циклы, update по регионам) работает мгновенно.
Но!
В последнее время много говорят о смерти флеша и о безоговорочной победе html5. Так вот, во flash можно выключить сглаживание, а как же великий и могучий html5? Неужели в этом гиганте, убивающем флэш наповал, нельзя сделать такой вот примитив (т.е. чтоб кроссбраузерно)?
p.s. в некоторых местах забыл расставить тэги sarcasm.
Один localStorage на все поддомены. Нельзя, но может всё-таки можно?
Имеется многоязычный проект. Каждому языку соответствует поддомен, а также есть специальные поддомены для статики и особых версий (примерно как на Википедии):
en.example.com<br/>
ru.example.com<br/>
...<br/>
static.example.com<br/>
m.example.com<br/>
fb.example.com<br/>
vk.example.com<br/>
...<br/>
У пользователей во время работы будут накапливаться данные, которые в принципе не нужны на серверной стороне, плюс этих данных может быть больше, чем на 4 KБ, т. е. куки использовать не желательно.
HTML 5 localStorage, казалось бы, подходит идеально, но есть одно большое «но»: данные, сохранённые для одного поддомена, не видны на всех остальных поддоменах согласно спецификации из соображений безопасности.
Не могли бы вы, уважаемые хабровчане, посоветовать, каким образом можно осуществить местное хранение данных в таком случае? Сталкивался ли кто-то ещё с подобной проблемой, успешно решив её? Может быть, стоит каким-либо образом использовать iFrame, хранить localStorage там и «общаться» с ним? Есть ли какие-то другие подходы в решении этой задачи?
en.example.com<br/>
ru.example.com<br/>
...<br/>
static.example.com<br/>
m.example.com<br/>
fb.example.com<br/>
vk.example.com<br/>
...<br/>
Большая нагрузка на браузер при вкл jquery
Добрый день. Подскажите пожалуйста как решить такую проблему. Установил на сайт плагин лупы для изображений. Все подключается и работает, но так как это интернет магазин на одной странице может находиться до 20 картинок и когда наводится мышка на одно из изображений запускается функция для всей страницы. Каким образом можно ее ограничить только одной картинкой? Навел — загрузилась картинка — подключилась функция — убрал мышку — отключилась и так по кругу…
вот какую функция я смог прописать для включения библиотеки:
<script type=\'text/javascript\'>
$(document).ready(function(){
$(\'#zoom1\').hover(function(){
$.getscript(\'js/cloud-zoom.1.0.2.min.js\', function(){
testAjax();
});
})
});
</script>
ссылка на лупу: www.professorcloud.com/mainsite/cloud-zoom.htm
З.Ы. Просто подключить лупу в хэдер как написано в примере не получится, потому что вывод каталога на сайте сделан целиком на аяксе.
$(document).ready(function(){
$(\'#zoom1\').hover(function(){
$.getscript(\'js/cloud-zoom.1.0.2.min.js\', function(){
testAjax();
});
})
});
</script>
Hover-state отдельных областей canvas
Здравствуйте! Возникла проблема реализации hover-state отдельных областей canvas.
Предположим, что на холсте 40х80 два квадрата по 40 пикселов. Понять, какую именно область подсвечивать (при назначении обработчика mousemove) проблем не представляет, проблема в том, чтобы изменять (например, затемнять) область надо лишь 1 раз, и когда указатель покинул нужное пространство возвратить исходный вид области. Прошу прощения, если вопрос глуп — я только осваиваю canvas. Заранее спасибо за советы.
Qooxdoo: создать и запустить source-версию под денвером?
Как правильно создать каркас приложения на Qooxdoo чтобы source-версию приложения можно было запускать через _localhost/app а не _Z:\home\localhost\www\app\index.html?
Скомпилированная Build-версия отлично запускается с вебсервера (denwer). Но нужно запускать именно Source-версию. Мало того что нужен дебаг приложения, так еще и не получается в рабочем режиме отрабатывать ajax, приходится делать через jsonp (чтобы работать с кроссдоменными запросами). То же самое с флешовым построителем графиков: хочет только обращения из домена. Ну и так, по мелочам.
Спасибо.
Произвести модификацию в jQuery UI и получить сжатый вариант?
Некоторое время назад я писал о том, что пишу некий «аналог jQuery Treeview». Благодаря подсказке nikitammf проблему «отпрыгивающего элемента» я поборол.
Но появилась другая проблема. Чтобы описать её, я сначала объясню каким образом плагин jQuery UI Draggable определяет находится ли в данный момент переносимый элемент над droppable-элементом.
В момент начала переноса захваченного элемента вызывается метод $.ui.ddmanager.prepareOffsets(this, event) (строка 152 файла /development-bundle/ui/jquery.ui.draggable.js). Этот метод запоминает в кэше абсолютные координаты всех droppable-элементов. Затем в процессе переноса draggable-элемента, его меняющиеся координаты постоянно сверяются с координатами droppable-элементов из кэша, и когда наступает пересечение координат — плагин опознаёт, что захваченный элемент оказался над тем-то droppable-элементом (т.е. наступает событие «hover»). Кэш координат droppable-элементов всегда рассчитывается только один раз — в момент начала переноса захваченного элемента.
Как это конфликтует с моим кодом? Как я уже писал, в момент наступления события «hover» у меня отсылается запрос на сервер, который возвращает список дочерних элементов, которые вставляются вложенным списком. Поскольку вставляется вложенный список, координаты последующих (лежащих ниже) droppable-элементов при этом меняются, но кэш координат об этом не знает.
В результате если захватить самый первый элемент, задержать над вторым элементом (дождавшись появления вложенного списка) и дальше вести его вниз, то третий и последующий элементы среагируют ещё задолго до того, как перетаскиваемый элемент реально окажется над ними (потому что в кэше координат остались старые координаты и он по-прежнему думает, что все droppable-элементы остались на своих изначальных местах).
Как решить эту проблему, впринципе понятно: пересчитать кэш координат (вызвать метод $.ui.ddmanager.prepareOffsets(this, event)) после вставки дочернего списка.
Но так просто вызвать этот метод не получается: его имя уже изменено в процессе компоновки и минимизации конструктором jQuery UI (я использую не гигантский архив с кучей js-файлов, а собранный конструктором один файл).
Как здесь быть? Как вызвать метод, имя которого уже «обфусцировано»?
Онлайн-пример собственно моей разработки тут.
"Резиновость" элементов js
Есть ли способ определить, что размер какого-либо элемента страницы задан в %? в DOM как я понимаю, хранятся уже вычисленные значения, автоматически пересчитываемые при ресайзе.
Можно поставить вопрос иначе: можно ли каким либо образом изменять такие автоматически вычисленные размеры без потери «резиновости»?
Есть ли аналог JavaScript под WAP?
Нужно сделать таймер обратного отсчета, но насколько я понимаю, Javascript не шибко поддерживается протоколом WAP. В википедии нашел абзац, где сказано что есть аналог javascript под WAP. Подскажите, куда копать, пожалуйста.
Непонятное поведение Javascript в простых ситуациях. Растолкуйте
Мне конечно после C++ сложно бывает находить подобные ошибки в коде. Но все таки: чем объясняется подобное поведение JS?
Пример первый. В обоих случаях ожидалось true:
var flag = true;
flag &= true;
alert(flag);//говорит "1"
var flag = true;
flag = flag && true;
alert(flag);//говорит "true"
Примет второй. Сравнение на «равенство» двух объектов-дат всегда возвращает false. При этом <= и < возвращают разные значения. Непонятно.
alert(new Date == new Date);//говорит "false"
alert(new Date <= new Date);//говорит "true"
alert(new Date >= new Date);//говорит "true"
alert(new Date < new Date);//говорит "false"
alert(new Date > new Date);//говорит "false"
flag &= true;
alert(flag);//говорит "1"
var flag = true;
flag = flag && true;
alert(flag);//говорит "true"
alert(new Date <= new Date);//говорит "true"
alert(new Date >= new Date);//говорит "true"
alert(new Date < new Date);//говорит "false"
alert(new Date > new Date);//говорит "false"
Как автоматически вытащить и модифицировать ссылку на изображение из исходного кода страницы?
Подскажите, пожалуйста, как вытащить и модифицировать ссылку на изображение из исходного кода страницы? Желательно через userscript для оперы.
Цель: фото товаров, например — direct.asda.com/george/shoes/ladies-shoes/boots/fa...
В коде можно обнаружить прямую ссылку на изображение — http://asda.scene7.com/is/image/Asda/5052341219998...
Если изменить параметр ?hei=400 на ?hei=2000 то картинка отдается в максимальном размере, пример — http://asda.scene7.com/is/image/Asda/5052341219998...
Внимание, знатоки, вопрос :)
Как это дело автоматизировать через userjs для оперы, чтобы, например, рядом с фото товара появлялась ссылка, которая вела бы на картинку максимального размера, дабы её удобно было сохранить?
Всем заранее спасибо!
Facebook API friends.get?
Добрый вечер.
Проблема с апи фейсбука, и с функцией friends.get (uid ). В момент авторизации через ФБ на моем сайте запрашиваются расширенные права
FB.login(handleSessionResponse, {<br/>
// <a href="http://developers.facebook.com/docs/authentication/permissions">developers.facebook.com/docs/authentication/permissions</a><br/>
perms: [<br/>
'offline_access',<br/>
'user_about_me',<br/>
'friends_about_me',<br/>
'friends_interests',<br/>
'user_interests',<br/>
'friends_location',<br/>
'user_location',<br/>
'friends_online_presence',<br/>
'user_online_presence',<br/>
'email, read_stream, publish_stream, offline_access, status_update, photo_upload, create_event, rsvp_event, sms, video_upload, create_note, share_item'<br/>
].join(',')<br/>
});
И вроде бы, пользователь дает доступ к своим друзьям в офлайн режиме. Он отображается в friends.appUsers.
Но фигня вот в чем.
FB.api({ method: 'friends.get', uid: 'айди пользователя, предоставившего все права моему сайту' }, function(result) {<br/>
console.log(result)<br/>
})<br/>
Resukt выдает ошибку №240 — Requires a valid user is specified (either via the session or via the API parameter for specifying the user.
Но как так, если все полномочия пользователь сам дал, а айди задан верно? Причем это не работает не только на моем сайте, но и через тестовую консоль ФБ (где параметры в формочки вводить надо:)).
Будут какие-либо идеи?
PS Работать это должно примерно так: Пользователь П1 дает права на доступ к своим друзьям. Потом на сайт захожу я, и даю доступ к своим друзьям. Если П1 есть в моем списке друзей, то я хочу вывести список его друзей (он же дал права на офлайн доступ к его друзьям)
FB.login(handleSessionResponse, {<br/>
// <a href="http://developers.facebook.com/docs/authentication/permissions">developers.facebook.com/docs/authentication/permissions</a><br/>
perms: [<br/>
'offline_access',<br/>
'user_about_me',<br/>
'friends_about_me',<br/>
'friends_interests',<br/>
'user_interests',<br/>
'friends_location',<br/>
'user_location',<br/>
'friends_online_presence',<br/>
'user_online_presence',<br/>
'email, read_stream, publish_stream, offline_access, status_update, photo_upload, create_event, rsvp_event, sms, video_upload, create_note, share_item'<br/>
].join(',')<br/>
});FB.api({ method: 'friends.get', uid: 'айди пользователя, предоставившего все права моему сайту' }, function(result) {<br/>
console.log(result)<br/>
})<br/>
Способ присваивания переменным дефолтных значений?
Часто бывает так, что каким-либо переменным надо присвоить значение по-умолчанию, если не дано иного. Примерами могут быть необязательные аргументы функций, данные из localStorage и т. п. Есть разные способы, позволяющие это сделать, но сводятся они к одному смыслу:
проверить, присвоено ли какое-то значение / если да, то выполнять следующую задачу / если нет, то назначить дефолтное значение и выполнять следующую задачу.
Пара возможных примеров кода:
// 1-й вариант<br/>
if (!argument) argument = 'value';<br/>
<br/>
// 2-й вариант<br/>
argument = argument || 'value';
Вопрос в следующем — какой из приведенных вариантов является оптимальным? Какой из них лучше использовать?
// 1-й вариант<br/>
if (!argument) argument = 'value';<br/>
<br/>
// 2-й вариант<br/>
argument = argument || 'value';
Ресайз панелей google docs
В интерфейсе google docs (в ff и google chrome) на экране навигации по документам, если увеличить левую панель, передвинув хэндлер (синий блок между панелью папок и документов) более чем на половину экрана — не удается восстановить прежние габариты панелей в состояние по-умолчанию.
Кто сталкивался или встречал решение?
381   2   15:12, 19th August, 2020
Как работает навигация по письмам в Gmail?
В web-интерфейсе Gmail навигация по письмам сделана следующим образом:
Изначально мы на странице «Входящие»
https://mail.google.com/mail/?hl=ru&shva=1#inbox
Нажимаем на письмо и попадаем на
https://mail.google.com/mail/?hl=ru&shva=1#inbox/12c4911509040a02
При этом открывается само письмо.
Как видно, мы работаем через «решетку» #, поэтому перезагрузки страницы не происходт, вместо этого происходит переход «по якорю». Тем не менее, URL меняется, и браузер делает переход без отправки запроса на сервер, в результате чего мгновенно открывается текст письма (который уже где-то хранился в DOM и посредством JS выводится пользователю), и становится доступной кнопка «Назад» в браузере, что очевидно. Если ее нажать, мы возвращаемся к списку писем, текст письма при этом скрывается, конечно же без перезагрузки страницы, и это очень быстро работает.
Вопрос: Как это работает? Конкретно, после нажатия «Назад». Ведь мы работаем на одной странице, нужно как-то закрыть открытое письмо. Как работает этот механизм? Какое события обрабатывается? Надеюсь, суть вопроса ясна.
Обновление JavaScript скрипта на клиенте
Как правильно организовать подключение JS на сайте клиента, чтобы потом в любой момент скрипт JS можно было обновить и он подхватился всеми клиентами, т.е. сбросилось бы кеширование браузером? JS, например, код подключения какого то виджета.
Нужно для того, чтобы при каждом обновлении скрипта не просить клиентов обновить его код подключения на своих сайтах.
История посещений в Javascript
Можно ли как-нибудь управлять историей посещений (кроме перехода вперед-назад) в Javascript хотя бы в одном из распространенных браузеров? Или можно как-нибудь отслеживать нажатия на кнопки вперед-назад и не давать переходить по ним?
Интересует для веб-приложения, активно использующего ajax.
Логическое отрицание результата выполнения анонимной функции
В сорцах facebook был найден образец нижеизложенного кода. Подскажите, пожалуйста, назначение и смысл использования подобного приёма:
!function(){
…
}();
Оригинал:
!function(){
var c = document.documentElement;
var b = 'child_focused';
var d = 'DOMControl_placeholder';
var a = function(e){
e = e || window.event;
var f = e.target || e.srcElement, h = f.getAttribute('placeholder');
if (h) {
var g = Parent.byClass(f, 'focus_target');
if ('focus' == e.type || 'focusin' == e.type) {
if (f.value == h) {
f.value = '';
CSS.removeClass(f, d);
g && CSS.addClass(g, b);
}
}
else
if (f.value == '') {
CSS.addClass(f, d);
f.value = h;
g && CSS.removeClass(g, b);
}
}
};
c.onfocusin = c.onfocusout = a;
if (c.addEventListener) {
c.addEventListener('focus', a, true);
c.addEventListener('blur', a, true);
}
}();
Спасибо!
…
}();
var c = document.documentElement;
var b = 'child_focused';
var d = 'DOMControl_placeholder';
var a = function(e){
e = e || window.event;
var f = e.target || e.srcElement, h = f.getAttribute('placeholder');
if (h) {
var g = Parent.byClass(f, 'focus_target');
if ('focus' == e.type || 'focusin' == e.type) {
if (f.value == h) {
f.value = '';
CSS.removeClass(f, d);
g && CSS.addClass(g, b);
}
}
else
if (f.value == '') {
CSS.addClass(f, d);
f.value = h;
g && CSS.removeClass(g, b);
}
}
};
c.onfocusin = c.onfocusout = a;
if (c.addEventListener) {
c.addEventListener('focus', a, true);
c.addEventListener('blur', a, true);
}
}();
быстрые манипуляции со строками таблицы
Есть таблица на 5к строк. И необходимость скрывать/показывать выборки из 1к её строк. Обычный вариант $(#table .need_hide).hide() работает очень долго. Минуты в зависимости от браузера. Есть варианты сделать-таки это средствами js или переносить на сервер только?
Загрузка своего Javascript в контент iFrame
Здравствуйте, подскажите пожалуйста, есть iFrame на странице, необходимо сделать так, чтобы в этот iFrame был включен мой javascript код ( в body)
например
<\iframe src="http://apple.com">
где на сайте apple.com открытом в iframe необходимо в тег Body добавить, например:
<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
Пытался использовать метод Jquery.contents(), не получилось, подскажите, как решить проблему?
Как протестировать pda версию сайта?
Для того, чтобы понять как будет выглядеть переделанный сайт на мобильных устройствах, нужно иметь возможность сделать полное тестирование.
Т.е. посмотреть сайт на компьютере в том виде, в котором он будет на мобильном устройстве. И еще крайне желательно, чтобы действовали pda ограничения javascript. В частности интересует ajax в формах, будет ли работать также.
Есть ли какая-нибудь софтинка, подходящая для этих целей?
Клонирование элементов HTML5 в IE 6-8. Кто придумает как обойти баг?
Приятного времени суток.
Обнаружил своеобразный баг.
После добавления
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
HTML5 элементы в IE 6-8 отображаются нормально.
Но если клонировать узел с HTML5 элементами c помощью .cloneNode(true) или jQuery .clone(true), то все HTML5 элементы будут потеряны.
Как показывает .innerHTML клонированного узла, превращается в <:nav></:nav>.
Если почистить innerHTML с помощью регулярного выражения… элементы просто исчезают без следа.
Есть ли идеи, как можно обойти этот баг, не создавая поэлементно достаточно сложную иерархию узлов?
С уважением и надеждой на ответ.
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
Проблема с click event в ajax
есть код
$(document).ready(function(){
$('.banner_stat').bind( 'click',
function(event){
$.get("index.phtml", { banner:$(this).attr("id")});
});
});
этот код должен срабатывать при клике на элементе(в моем случае это div). В мазиле опере все работает нормально вне зависимости от содержимого дива… в хроме и ie не работает когда внутри дива есть embed. Можно ли исправить это?
$('.banner_stat').bind( 'click',
function(event){
$.get("index.phtml", { banner:$(this).attr("id")});
});
});
Что почитать по JavaScript?
Посоветуйте толковые книги/мануалы по JS.
Есть ли по JS какой-нить общепринятый справочник, возможно в формате chm?
Материалы по современному Javascript?
Пришла пора мне взяться за client-side скриптинг, но с Javascript я знаком поверхностно. В связи с этим нужны следующие материалы:
- Часто используемые библиотеки (если есть что-то вроде перловского CPAN — вообще замечательно)
- Справочник по языку
- Примеры кода — чтобы понять, как сейчас на нем пишут
- Применение AJAX
- Ну и напоследок вопрос: кроссбраузерный скриптинг до сих пор является проблемой, или она успешно решена?
Существует ли open-source скрипт похожий на min.us?
Где можно скачать скрипт типа того, на котором работает сайт min.us/? Хочу установить на свой домен.
Отправка логов с клиента на сервер
Есть клиентская часть(upd: живет в норм браузере (ff,gc,sf,op)) некоего web-application`а, которая очень активно логгирует свои действия (на данный момент лог собирается в textarea'ю; не знаю лучший ли вариант, может еще и здесь что нибудь подскажут).
Хочется иметь эти логи на сервере. Так как лог большой, то было бы неплохо заархивировать все это дело и отправить на сервер.
возможно ли это? если да — то как? Может есть где-нибудь пример, или ссылка на док…
Thanks in advance!
upd:
$("textarea_with_log").value += new_log_string;
клиент «знает» когда нужно остановить логгирование и инициировать процессинг лога. Проблемы с завершением/выключением клиентской части/браузера «можно считать» что нет
Вконтакте API сервер-сервер
Как известно, у Вконтакте есть несколько способов работы с API:
- через JS со стороннего сайта или из встроенного приложения
- на ActionScript для приложений
- и Desktop-приложения
Для того, чтобы организовать работу с сервисом в то время, когда пользователь не находится на сайте способа я не нашёл, иначе говоря, нет возможности совершать запросы к API сервер-сервер (за исключением нескольких специфичных функций).
В один момент показалось, что можно замаскировать сервер под desktop-приложение, но и там ложка дёгтя, после перехода на сайт Вконтакте для авторизации, он не в состоянии передать никаких данных нашему серверу.
Итак, вопрос. Можно ли как-то организовать взаимлдействие с API вконтакте в режиме сервер-сервер?
Редактор с подсветкой для JSON
Подскажите какой-нибудь редактор, в котором удобно просматривать JSON.
Под «удобно» я имею в виду:
1) Автоматическая разбивка и отображение в виде иерархии (даже если я открыл файл, где все записано в одну строку).
2) Подсветка (хотя бы минимальная, скобочки там).
Есть плагин для Лисы, но хотел бы использовать standalone решение или хотя бы web-тулзу.
jQuery UI Dialog, как повесить событие на нажатие ссылки внутри него?
Сейчас код выглядит так:
<div id="address-wrapper">
<a id="address-select" href="#" title="Нажми">Нажми</a>
</div>
<div id="dialog-form" title="Выберите ваш город">
<label for="search">Поиск</label>
<input type="text" name="search" id="search" class="text ui-widget-content ui-corner-all" />
<input type="button" name="post" id="search-button" value="Поиск" />
<br /><br />
<div id="results"></div>
</div>
<script type="text/javascript">
function searchSubmit() {
$.ajax({ type: "POST",
url: "gni_ajax.asp",
data: "query=" + $("#search").val(),
success: function(data){
$("#results").empty();
$("#results").append(data);
return false;}
});
};
$('#search').keypress(function(event) {
if (event.keyCode == '13') {
searchSubmit();
}
});
$("#search-button").click(function () { searchSubmit(); });
$("#dialog-form").dialog({
autoOpen: false,
height: 400,
width: 400,
modal: true,
buttons: {
"Отмена": function() {
$( this ).dialog("close");
}
},
close: function() {
alert("i'm closing!");
}
});
$("#address-select").click(function() {
$( "#dialog-form" ).dialog( "open" );
});
$(".addr").click(function() {
alert($(this).text());
alert(this.id);
$("#dialog-form").dialog("close");
});
</script>
Надо было мне, чтобы при нажатии на одну из ссылок, возвращенных аяксом (разные числовые id и тексты, один класс .addr, ее текст и значения вставлялись в input. Но добиться этого я не смог. Решил хотя бы посмотреть, что выдаст alert. Но он и того не показал, никакой реакции на нажатие нет. Если вешаю событие на нажатие address-select, то все срабатывает хорошо. Но эти ссылки, внутри диалога которые — не работают. Не то, что алерт, но и сам диалог не закрывается. Даже если указать не ".addr", а просто «a» Проверял в firebug, элементы создаются нормально:
<a href="#" id="7700000000000" class="addr">Москва г</a>
Что с этим делать? Ведь должно работать же!
<div id="address-wrapper">
<a id="address-select" href="#" title="Нажми">Нажми</a>
</div>
<div id="dialog-form" title="Выберите ваш город">
<label for="search">Поиск</label>
<input type="text" name="search" id="search" class="text ui-widget-content ui-corner-all" />
<input type="button" name="post" id="search-button" value="Поиск" />
<br /><br />
<div id="results"></div>
</div>
<script type="text/javascript">
function searchSubmit() {
$.ajax({ type: "POST",
url: "gni_ajax.asp",
data: "query=" + $("#search").val(),
success: function(data){
$("#results").empty();
$("#results").append(data);
return false;}
});
};
$('#search').keypress(function(event) {
if (event.keyCode == '13') {
searchSubmit();
}
});
$("#search-button").click(function () { searchSubmit(); });
$("#dialog-form").dialog({
autoOpen: false,
height: 400,
width: 400,
modal: true,
buttons: {
"Отмена": function() {
$( this ).dialog("close");
}
},
close: function() {
alert("i'm closing!");
}
});
$("#address-select").click(function() {
$( "#dialog-form" ).dialog( "open" );
});
$(".addr").click(function() {
alert($(this).text());
alert(this.id);
$("#dialog-form").dialog("close");
});
</script>
<a href="#" id="7700000000000" class="addr">Москва г</a>
Имитировать аплоад файла на сервер из JS?
Здравствуйте!
Моя цель — составить в JS и отправить POST-запрос к серверу, зааплоадив файл, содержимое которого будет взять не с диска юзера, а сгенерировано в JS.
Не совсем понимаю, что для этого стоит использовать — xmlhttprequest или есть что-то более высокоуровневое?
P.S. Конкретная цель — зааплодить через API ВКонтакта изображение, созданное на canvas.
Какие "заготовки" вы используете при вёрстке нового проекта?
Надоело верстать с нуля, знаю что многие используют различные заготовки вроде oocss, html5 boilerplate, однако кроме этих двух я больше ничего не знаю.
Посмотрел oocss и понял что из его функционала ничего не нужно, а идея не так и интересна.
html5bloilerplate сломан, половина всего не работает, что-то работает не так, что-то даже в хроме не работает.
Может есть что-то ещё?
mysql_real_escape_string vs mysql_escape_string
Согласно документации, стоит использовать только функцию mysql_real_escape_string.
Насколько я понимаю, это связано в основном с применением юникода и действительно оправдано.
Вопрос: насколько часто ошибается mysql_escape_string и можно ли в языках с нативной поддержкой юникода пользовать своей реализацией вроде:
/**
* Escape string for mysql. Don't use native function,
* because it doesn't work without connect.
*/
exports.escapeStr = function(str) {
return str.replace(/[\\"']/g, "\\$&").replace(/[\n]/g, "\\n")
.replace(/[\r]/g, "\\r").replace(/\x00/g, "\\0");
};
UPD: Вышеприведённый код не полный, в нём присутствуют не все символы, которые нужно экранировать. Давайте будем исходить из того, что replace для \b, \t, \Z, _, % также присутствуют:
exports.escapeStr = function(str) {
return str.replace(/[\\"']/g, "\\$&").replace(/\n/g, "\\n")
.replace(/\r/g, "\\r").replace(/\x00/g, "\\0")
.replace(/\b/g, "\\b").replace(/\t/g, "\\t")
.replace(/\x32/g, "\\Z") // \Z == ASCII 26
.replace(/_/g, "\\_").replace(/%/g, "\\%");
};
/**
* Escape string for mysql. Don't use native function,
* because it doesn't work without connect.
*/
exports.escapeStr = function(str) {
return str.replace(/[\\"']/g, "\\$&").replace(/[\n]/g, "\\n")
.replace(/[\r]/g, "\\r").replace(/\x00/g, "\\0");
};exports.escapeStr = function(str) {
return str.replace(/[\\"']/g, "\\$&").replace(/\n/g, "\\n")
.replace(/\r/g, "\\r").replace(/\x00/g, "\\0")
.replace(/\b/g, "\\b").replace(/\t/g, "\\t")
.replace(/\x32/g, "\\Z") // \Z == ASCII 26
.replace(/_/g, "\\_").replace(/%/g, "\\%");
};
Взаимодействие между замыканиями в JavaScript?
Есть замыкания:
(function () {
// do something
})()
(function () {
// do another thing
}) ()
Как бы вы организовали взаимодействие между объектами в этих замыканиях?
Собственно, вопрос возникает при использовании jQuery в больших проектах… вот есть, к примеру, диалоговое окно на jQuery UI. Но это как бы частный случай общей проблемы.
Обычно у меня это выглядит так:
<div id="dialog">
<p>something</p>
</div>
<button id="show_dialog_btn">Show Dialog</button>
<script>
jQuery(function ($) {
$("#dialog").dialog({
куча параметров,
ну просто тьма всяких настроек
и разные колбэки,
buttons: {
OK: function () {
// что-нибудь родить....
}
}
});
$("#show_dialog_btn").click(function () {
$("#dialog").dialog('open');
});
});
</script>
Диалоговое окно в этом случае, фактически состоит из НТМЛ разметки и джаваскрипт кода. Для простоты опустим ЦСС. Теперь, чтобы создать это же окно на другой странице, нужно либо копировать либо… А вот тут начинаются сложности… Если параметры окна зависят от каких-либо параметров в текущем замыкании, Допустим оно по нажатию кнопки Ок, должна быть вызвана «местная» для замыкания функция. Как быть?
(function () {
// do something
})()
(function () {
// do another thing
}) ()<div id="dialog">
<p>something</p>
</div>
<button id="show_dialog_btn">Show Dialog</button>
<script>
jQuery(function ($) {
$("#dialog").dialog({
куча параметров,
ну просто тьма всяких настроек
и разные колбэки,
buttons: {
OK: function () {
// что-нибудь родить....
}
}
});
$("#show_dialog_btn").click(function () {
$("#dialog").dialog('open');
});
});
</script>
JavaScript: событие — появление элемента в области видимости. Как?
В фейсбуке лента новостей, при прокрутке страницы вниз, дозагружается сама.
Здесь вот тоже так же: nebo-v-almazah.ru/earrings
Что-то заработался и не могу никак понять как мне это сделать без постоянной проверки через setInterval()
Может что-то такое есть в jQuery?
Отправка булевых значений в запросах jQuery.ajax()
$.ajax({
url : uri,
type : 'post',
data : {someBooleanVar1: false, subVar: {someBooleanVar2: true}}
});
Проблема в том, что сервер получит переменные someBooleanVar1 и someBooleanVar2 в виде строк «false» и «true», а не «0» и «1».
Вопрос в том, есть ли в jQuery какой-то параметр или метод автоматизирующий конвертацию булевых значений в 0/1? Ну или если средствами jQuery такое не реализовать, то можеть кто-нибудь знает простенький способ обойти рекурсивно объект заменив boolean на number.
Спасибо!
url : uri,
type : 'post',
data : {someBooleanVar1: false, subVar: {someBooleanVar2: true}}
});
HTML5 анимация в canvas на JavaScript
Каким образом реализовывать анимацию на canvas в HTML5?
Просто задать интервал времени, через который каждый раз будет вызываться функция, которая в свою очередь будет заново прорисовывать содержимое canvas, или есть лучший способ?
Безопасный кроссдоменный обмен данными между AJAX и PHP
На одном сервере лежит PHP скрипт, на другом есть сайт, использующий AJAX. Как передавать между ними данные, чтобы гарантировать конфеденциальность и невозможность подделывания (вместо AJAX может быть и Flash, и обычные GET/POST запросы — на сокетах то просто, а нужно вот так вот)?
Единственное, что приходит в голову, это дополнительный скрипт ПХП и сокеты + SSL. Но это не очень удобно (т.к. может использоваться флеш без ПХП). Использование секретных ключей не кажется мне безопасным — флеш или яваскрипт легко стянуть и подстмотреть всю информацию. RSA — в одну сторону отправлю, но в обратную опять же — можно подсмотреть секретный ключ.
Какие есть варианты?
Изучение серверного JavaScript
В последнее время все чаще JavaScript появляется на стороне сервера — Node.js, views в couchDB. Подавляющее большинство учебников, уроков и примеров по JS ориентированы исключительно на клиентскую часть, в лучшем случае классические фолианты вроде Флэнагана подробно рассматривают общий синтаксис и структуры языка. Есть ли уже полноценные книги или хотя бы толковые наборы уроков и примеров по серверному JavaScript? Можно на английском.
Регулярные выражения, использующие lookbehind, на языке JavaScript. Есть ли готовый код, решающий эту проблему раз и навсегда?
Как известно, на языке JavaScript вам не удастся попросту записать на языке регулярных выражений нечто подобное:someString.replace(/(?<!([abcdef]))gh/, …)
Не удастся потому, что в джаваскрипте нет учёта символов, предшествующих найденному выражению, то есть нет того, что называется «lookbehind assertions» — уж не знаю, есть ли устоявшийся термин для этого кода («(?<!……)») на русском языке.
Естественно, что программисты, использующие JavaScript, выработали целый ряд приёмов, позволяющих обойти этот недостаток. (Вон там перечислены многие такие трюки, например.)
Сейчас меня интересует кое-что другое, однако же. Не было ли в истории открытого кода каких-нибудь попыток окончательно решить эту проблему раз и навсегда — например, портировав библиотеку PCRE на язык JavaScript целиком?
Вопрос может показаться довольно дерзким по своему замаху, я знаю; однако, в конце концов, в истории не раз случались масштабные (и успешные!) попытки портировать или эмулировать на JavaScript то да сё; например, эмулятор Commodore 64 (о котором я упоминал на Хабрахабре прошлой зимою), или реализация многих функций PHP на JavaScript с открытым кодом, и так далее. Вдруг и с PCRE что-то подобноекому-нибудь удалось достигнуть, а я просто не знаю?
Опять же и попытки добавить в JavaScript новые флаги и элементы регулярных выражений также производились — XRegExp, например. Правда, в нём нету lookbehind, к сожалению.
Влияние JavaScript переадресации на поисковых ботов и индексирование сайта?
Есть две страницы с разными url, но содержание на них примерно одно и тоже. На одной активно используется JS+ajax, а другая адаптирована для просмотра пользователей без JavaScript, и для ботов.
Изначально грузится страница для людей без JS (которая для ботов), далее если у пользователя включена поддержка JS, то он перенаправляется средствами JS на другую страницу (адаптированную для активного использования JS).
Вопрос можно ли так делать безболезненно для индексации сайта и не повлияет ли это негативно на выдачу сайта в в поисковых системах?
Использование общего localStorage для поддоменов?
Здравствуйте. Обращаюсь за советом. Стоит задача — не гонять данные через cookies постоянно на сервер, а хранить их в localStorage и иметь к ним доступ через JavaScript.
Проблема в том, что localStorage даёт доступ только для конкретного адреса. То есть для адресов:
sub.domain.ru
sub2.domain.ru
данные будут разные. Есть ли какой-то способ объединить данные?
Пробовал вариант с iframe:
var ifr = document.createElement('iframe');<br/>
ifr.src = 'domain.ru/localstorage.html';<br/>
ifr.name = 'localStorageIframe';<br/>
document.body.appendChild( ifr );<br/>
после чего обращение к данным (и их сохранение) шло через window.frames[«localStorageIframe»].localStorage[«lastseen»]
Но это не дало результата — данные по-прежнему разные для разных поддоменов.
Есть ли у кого мысли, как это реализовать?
var ifr = document.createElement('iframe');<br/>
ifr.src = 'domain.ru/localstorage.html';<br/>
ifr.name = 'localStorageIframe';<br/>
document.body.appendChild( ifr );<br/>
Аналог Панорамио — проблема с картой
Задача — выводить на карте свой слой с фотографиями, изменяемый при увеличение или уменьшении карты — очень похоже на то, что делает панарамио.
Вариант использовать через апи маркеры отпадает сам собой.
Уже понятно, что на серверной стороне нужно генерить тайлы 256 на 256 пикселей с превьюшками фоток. Из этого примера стало понятно как эти тайлы накладывать. Но есть главная проблема — как обрабатывать события мыши при взаимодействии с наложенными фотками.
Буду благодарен за любые идеи!
Линии переменной толщины в HTML5 Canvas
Существует ли JS-библиотека, умеющая рисовать по canvas-у линии переменной толщины?
Ну то есть например: в начале толщина 3px, в конце 5px, и чтобы она плавно менялась вдоль всей линии.
Для прямых это, в принципе, реализовать не очень сложно. А вот для кривых Безье решение нетривиально.
javascript replace all
Иногда в исходном коде некоторых библиотек, написанных людьми грамотными, встречается конструкция string.split(find).join(replaceWith);
Чем это лучше обычного replace?
Асинхронная загрузка XML и Google Maps в jQuery
Ситуация: загружаются XML-файл и карты Гугла, чтобы данные из XML на ней отобразить. Делается всё асинхронно, требуется отследить, когда оба запроса выполнены.
Единственный простой способ, который я нашёл — Deferred objects в jQuery.
Пишем
function loadXML() {
return $.ajax({ url: 'data.xml', dataType: 'xml' });
}
Возвращаемый объект засовываем в $.when
$.when( loadXML(), ... ).then(function(){
doSomethind();
});
Проблемы возникают с загрузкой карты. Гугл предлагает следующий код для асинхронной загрузки:
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
document.body.appendChild(script);
}
Хочется знать, когда скрипт будет загружен и произойдёт обращение к initialize(). Первая мысль — запихать в initialize() ручное создание deferred-объекта и возвращать .promise(), но непонятно, что же добавить в $.when, чтобы тот сработал после того, как все методы API карт стали доступны.
Спасибо.
return $.ajax({ url: 'data.xml', dataType: 'xml' });
}
doSomethind();
});
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
document.body.appendChild(script);
}
1C события
Здравствуйте, к сожалению, пришлось столкнуться с 1С (:.
Есть textarea (html), подгружается в 1С. Мне надо как-то транслировать события onClick, onBlur,… в 1С и обрабатывать на стороне 1С их скриптами.
Т.е. я могу из 1C через eval подписаться на них, но тогда обработка будет на стороне js и только js-кодом. Возможно ли то, что я хочу?
— Версия последняя 8.2. Я сам просто 1с не знаю, моя задача — js. Но в данном вопросе без знания 1с не обойтись.
У меня есть форма, там есть какое-то поле, для него я определяю onClick:
Procedure ПолеHTMLДокумента1onclick(Control, pEvtObj)
сообщить(test);
EndProcedure
Так вот, мне надо из js вызвать это событие onclick. Т.е. сэмулировать, чтобы на стороне 1с оно обработалось и вывело 'test'.
сообщить(test);
EndProcedure
Как залочить файл в JScript(WSH)?
Хочу блокировать файл с параметрами на время исполнения, чтобы при обращении к нему был отказ в доступе. Пробовал так:
var fso = new ActiveXObject('Scripting.FileSystemObject');
var Lockeds = new ActiveXObject("Scripting.Dictionary");
function LockFile(path) {
if (!Lockeds.Exists(path)) {
//открываю указанный файл в режиме добавления содержимого, и не закрываю его
Lockeds.Add(path, fso.OpenTextFile(path, 8));
}
}
function UnLockFile(path) {
if (Lockeds.Exists(path)) {
//Закрываю файл
Lockeds.Item(path).Close();
Lockeds.Remove(path);
}
}
, но не помогает, к файлу все равно можно получить доступ на чтение.
Цель: исключить возможность одновременно работы более одной копии скрипта.
Делать запись, например, в лог не вариант, т.к. при сбое питания или перезагрузке не будет сделана запись об окончании работы.
var fso = new ActiveXObject('Scripting.FileSystemObject');
var Lockeds = new ActiveXObject("Scripting.Dictionary");
function LockFile(path) {
if (!Lockeds.Exists(path)) {
//открываю указанный файл в режиме добавления содержимого, и не закрываю его
Lockeds.Add(path, fso.OpenTextFile(path, 8));
}
}
function UnLockFile(path) {
if (Lockeds.Exists(path)) {
//Закрываю файл
Lockeds.Item(path).Close();
Lockeds.Remove(path);
}
}
Cross Domain XmlHttpRequest
Добрый день, друзья.
Целый день сегодня мучаюсь с вышеозначенной темой. Изначальная задача:
Выполняясь на site.com отправить POST запрос (даже ответ не обязательно получать) на xxx.site.com. В крайнем случае готов ограничиться браузером Google Chrome.
Казалось бы, задача уже не нова, написана куча материалов на тему, но что-то ничего не срабатывает…
Итак, что я уже попробовал:
- подменить document.domain перед отправкой. Как оказалось, менять с xxx.site.com на site.com можно, а вот обратно — никак...
- создать iframe с src=«xxx.site.com», а затем внутри него добавить в дом модель тег script, который будет содержать в себе логику по отправлению XmlHttpRequest. И вот этот вариант уже почти-почти сработал, как по непонятным мне причинам xhr.readystatechange вызывается один раз и readyState=1… Код примерно такой:
var iframe = $('<iframe src=«xxx.site.com» style=«display:none;»></iframe>').appendTo(document.body);
var iDoc = iframe.get(0).contentDocument;
var script = iDoc.createElement(«script»);
script.setAttribute(«type», «text/javascript»);
script.innerHTML =
«function postIt() {» +
«var xhr = new XMLHttpRequest();» +
«xhr.onreadystatechange = function(data) {» +
«alert(xhr.readyState);» +
«if (xhr.readyState == 4) {» +
" if (xhr.status == 200) {" +
" alert(data.toString());" +
" } else {" +
" alert(xhr.error);" +
" }" +
"}};" +
«var url = \»xxx.site.com\";" +
«var postParams = \»a=1&b=1\"" +
«xhr.open(\»POST\", url, true);" +
«xhr.setRequestHeader(\»Content-Type\", \«application/x-www-form-urlencoded;\»);" +
«xhr.send(postParams);» +
"}" +
«postIt();»;
iDoc.body.appendChild(script);
* This source code was highlighted with Source Code Highlighter.
- Также рассмотрел способ с YQL — не подошло
Какие есть еще идеи как это побороть?
var iframe = $('<iframe src=«xxx.site.com» style=«display:none;»></iframe>').appendTo(document.body);
var iDoc = iframe.get(0).contentDocument;
var script = iDoc.createElement(«script»);
script.setAttribute(«type», «text/javascript»);
script.innerHTML =
«function postIt() {» +
«var xhr = new XMLHttpRequest();» +
«xhr.onreadystatechange = function(data) {» +
«alert(xhr.readyState);» +
«if (xhr.readyState == 4) {» +
" if (xhr.status == 200) {" +
" alert(data.toString());" +
" } else {" +
" alert(xhr.error);" +
" }" +
"}};" +
«var url = \»xxx.site.com\";" +
«var postParams = \»a=1&b=1\"" +
«xhr.open(\»POST\", url, true);" +
«xhr.setRequestHeader(\»Content-Type\", \«application/x-www-form-urlencoded;\»);" +
«xhr.send(postParams);» +
"}" +
«postIt();»;
iDoc.body.appendChild(script);
* This source code was highlighted with Source Code Highlighter.
