Обратная косая черта исчезает из имени файла - PullRequest
1 голос
/ 17 ноября 2011

Это мой код:

<script>
document.getElementById(div').innerHTML = '<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\Asdeqw.txt\');">efff</a>';
</script>

Когда запускается функция openPhpFile, я оповещаю имя файла, и символы \ исчезают, даже если они удваиваются.addslashes() не помогает;что это может быть?

Ответы [ 5 ]

3 голосов
/ 17 ноября 2011

Вы должны сделать это вместо:

<script type='text/javascript'>
  (function () { // Closures are your friend
    // Declare variables
    var theDiv, theLink;
    // Create the link and assign attributes
    theLink = document.createElement('a');
    theLink.innerHTML = 'efff';
    theLink.href = '#';
    theLink.onclick = function () {
      openPhpFile('asdasD\\Asdeqw.txt');
    };
    // Get a reference to the container, empty the container and add the link
    theDiv = document.getElementById('div');
    theDiv.innerHTML = '';
    theDiv.appendChild(theLink);
  })();
</script>

Помните, что если вы echo извлекаете PHP из двойных кавычек, вам действительно потребуется обратная косая черта 4 . Это потому, что PHP также будет использовать двойную обратную косую черту и будет выводить только одну. Поэтому, если вы хотите, чтобы PHP отображал 2 обратных слеша, вам нужно поставить 4 дюйма.

2 голосов
/ 17 ноября 2011

попробовать:

var div = document.getElementById("div");

div.innerHTML = '<a>efff</a>';

div.firstChild.onclick = function () {
  openPhpFile('asdasD\\\\Asdeqw.txt');
};
1 голос
/ 17 ноября 2011

Просто интересно, зачем вам здесь обратный слеш?Разве не все ОС поддерживают (и большинство даже предпочитают) косую черту?Возможно, я был в мире Linux слишком долго.

Я бы просто использовал косую черту, по крайней мере, для вашей двойной косой черты (очевидно, не для кавычек).Мне было бы интересно узнать, что вы делаете, это означает, что косая черта не будет работать.

1 голос
/ 17 ноября 2011

Вы пробовали ставить 4 из них вместо 2 или 3 для каждого обратного слеша?

1 голос
/ 17 ноября 2011

Если вы откроете консоль js, вы увидите, что она превращается в asdasD\Asdeqw.txt

Поэтому попробуйте добавить еще одну косую черту.

'<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\\Asdeqw.txt\');">efff</a>'
...