Содержание доступа <noscript> с JavaScript

Это связано с точкой, в которой d связан. Лямбда-функции все указывают на переменную d, а не на текущее значение , поэтому, когда вы обновляете d в следующей итерации, это обновление просматривается через все ваши функции.

Для более простого примера:

funcs = []
for x in [1,2,3]:
  funcs.append(lambda: x)

for f in funcs:
  print f()

# output:
3
3
3

Вы можете обойти это, добавив дополнительную функцию, например:

def makeFunc(x):
  return lambda: x

funcs = []
for x in [1,2,3]:
  funcs.append(makeFunc(x))

for f in funcs:
  print f()

# output:
1
2
3

Вы также можете зафиксировать область видимости внутри выражения лямбда

lambda bound_x=x: bound_x

. Однако в целом это не очень хорошая практика, поскольку вы изменили подпись своей функции.

19
задан macinjosh 6 March 2009 в 23:39
поделиться

3 ответа

Если сценарии включены, , noscript элемент определяется как содержащий только текст - хотя это должно быть текст parsable с некоторыми ограничениями на содержание. Имея это в виду, необходимо быть в состоянии извлечь текст, проанализировать его и затем найти желаемый элемент. Элементарный пример этого следует:

var nos = document.getElementsByTagName("noscript")[0]; 
// in some browsers, contents of noscript hang around in one form or another
var nosHtml = nos.textContent||nos.innerHTML; 

if ( nosHtml )
{
  var temp = document.createElement("div");
  temp.innerHTML = nosHtml;

  // lazy man's query library: add it, find it, remove it
  document.body.appendChild(temp);
  var ex = document.getElementById("example");
  document.body.removeChild(temp);

  alert(ex.innerHTML);
}

Примечание это, когда я первоначально записал этот ответ, вышеупомянутое, отказавшее в Google Chrome; доступ к noscript содержанию, кажется, несколько лучше поддерживается в эти дни, но это все еще кажется мне пограничным случаем, который, возможно, несколько более вероятен, чем другие элементы показать ошибки - я избежал бы его, если у Вас есть другие опции.

15
ответ дан 30 November 2019 в 04:21
поделиться

От спецификация HTML 4.0:

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

  • агент пользователя настроен для не оценки сценариев.
  • агент пользователя не поддерживает язык сценариев, вызванный элементом СЦЕНАРИЯ ранее в документе.

мне кажется, что это подразумевает, что все содержание тега NOSCRIPT (в этом случае, Ваше отделение) проигнорировано в целом, если сценарии включены в браузере. Вы проверили, что отделение "в качестве примера" доступно через DOM вообще в Вашем случае?

3
ответ дан 30 November 2019 в 04:21
поделиться

Тестируя с Firefox 3.0.7, Safari 3.2.2 и MSIE 7.0.5730.13 (все на WinXP SP3) кажется, что все в <noscript> теги полностью опущено от дерева DOM.

может быть возможно получить доступ <noscript> сам элемент, однако, и затем использовать методы DOM для изменения его дочерних элементов.

3
ответ дан 30 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: