Сделайте Вас, когда-либо должен указывать 'JavaScript': в onclick?

Предупреждение: [fункция] : не удалось открыть поток: [причина]

Это происходит, когда вы обычно вызываете файл include , require или fopen, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.

Это может произойти по разным причинам:

  • неправильный путь к файлу
  • путь к файлу относительный
  • include path is wrong
  • разрешения слишком ограничительные
  • SELinux в силе
  • и многие другие ...

Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__ или dirname(__FILE__):

include __DIR__ . '/inc/globals.inc.php';

или:

require dirname(__FILE__) . '/inc/globals.inc.php';

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

Лучший способ для быстрого решения этой проблемы необходимо выполнить контрольный список устранения неполадок ниже.

Вопросы, относящиеся:

Связанные ошибки:

44
задан Ry- 8 September 2013 в 15:01
поделиться

8 ответов

Некоторые ответы здесь утверждают что "JavaScript": префикс является "остатком с былых времен", подразумевая, что он намеренно, особенно обрабатывается браузерами для назад совместимости. Есть ли убедительные доказательства, что дело обстоит так (кто-либо проверил исходный код)?

<span onclick="javascript:alert(42)">Test</span>

мне, это просто читает как:

javascript:
    alert(42);

Значение, что "JavaScript": просто маркировка и не имеет никакого эффекта. Это работает, также:

<span onclick="foobar:alert(42)">Test</span>

Обновление:

я действительно немного экспериментировал, и оказывается что, да, "JavaScript": обрабатывается особенно IE, но определенно не так Firefox, Safari, Opera или Chrome:

<span onclick="javascript:while (true) { alert('once'); break javascript; }">Test</span>

На неIE, это просто предупредит "однажды", однажды и затем убежит из цикла. На IE я получаю "Маркировку, не найденную" ошибка. Следующее хорошо работает во всех браузерах:

<span onclick="foo:while (true) { alert('once'); break foo; }">Test</span>

Обновление 2:

я просто понял ссылку http://crisp.tweakblogs.net/blog/the-useless-javascript-pseudo-protocol.html в одном из ответов выше в значительной степени переговоров о том же самом.

45
ответ дан Ates Goral 26 November 2019 в 22:10
поделиться

Это никогда не необходимо на привязках и никогда не является хорошей практикой. Привязка для навигации только. Статья об этой теме бесполезный JavaScript: псевдопротокол .

7
ответ дан Peter Mortensen 26 November 2019 в 22:10
поделиться

В начале Вы могли также использовать VBScript в Internet  Проводник вместо JavaScript, таким образом определяя "JavaScript:..." было стандартным.

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

5
ответ дан Peter Mortensen 26 November 2019 в 22:10
поделиться

См. Определение языка сценариев (в 18.2.2 в Сценарии Спецификации , HTML 4.01 ).

5
ответ дан Peter Mortensen 26 November 2019 в 22:10
поделиться

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

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

2
ответ дан Tomalak 26 November 2019 в 22:10
поделиться

Я всегда полагал, что это было плохое использование на основе того, что можно назвать JavaScript в URL с javascript: префикс:

<a href="javascript:void(alert('really bad usage!'))">

( Веб-формы , кто-то?)

И только неосведомленные веб-разработчики, которые никогда не осознавали различия между объявлением события и href-объявлением, использовали его.

я сказал бы, что даже атрибуты события являются плохой практикой в большинстве случаев в наше время, и предпочтительный способ присоединить событие при помощи .attachEvent (Internet  Проводник) и addEventListener (остальная часть браузеров, как обычно).

И наконец... Google является не всегда Господом всемогущим. Они имеют тенденцию вызывать больше беспокойства, что материал работает вместо следующих стандартов все время.

5
ответ дан Peter Mortensen 26 November 2019 в 22:10
поделиться

В Internet  Проводник, возможно установить набор языка по умолчанию на VBScript для страницы. В первые годы всегда была идея, что другой язык может использоваться для сценариев в браузере. Поскольку это сложилось, никакой такой язык не осуществился в существенной форме.

я не беспокоюсь этим префиксом языка сам.

2
ответ дан Peter Mortensen 26 November 2019 в 22:10
поделиться

Это - хорошая практика для Вашего программиста обслуживания. Компилятор знает, что различие, но настолько молодой, just-out-of-college веб-разработчик не может.

0
ответ дан George Stocker 26 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

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