Есть ли способ добавить document.url внутри location.replace (в Javascript) - PullRequest
0 голосов
/ 08 октября 2011

Это то, что я пытаюсь выполнить

location.replace('http://localhost:8888/test/index.php?site=' + document.URL);

Поэтому мне нужно, чтобы текущий URL был отправлен в виде строки переменной 'site'.Хотя document.URL не работает, есть ли способ заставить это работать?

Идея в том, что когда я захожу на index.php, сайт вставляется в базу данных.Я хотел бы, чтобы вышеуказанная ссылка работала как букмарклет, (вторая часть вопроса) есть ли способ выполнить этот код, но все еще оставаться на той же странице?

в основном, еслиЯ нахожусь на google.com и нажимаю на букмарклет, чтобы выполнить приведенный выше код. Есть ли способ остаться на google.com, но для ..index.php работать в фоновом режиме

В настоящий момент ядействительно нужна помощь с первой частью вопроса - но, может быть, у вас есть какие-либо советы о том, как выполнить вторую часть - большое спасибо

1 Ответ

3 голосов
/ 08 октября 2011
  • Используйте encodeURIComponent(location.href) вместо document.URL *
    1. Вы можете создать IFRame и установить его свойство src.
    2. Другой вариант - выполнитьXMLHttpRequest [1]
    3. (new Image).src = url
    4. window.open(url) (может быть заблокировано, мешает пользователю)
    5. Создать форму и отправитьэто (используя target=__, где __ может быть _blank или именем кадра.

[1] Этот метод не работаетв разных доменах. См. также: MDN: использование XMLHttpRequest .

Другой метод (позволяет передавать отзывы с сервера в виде кода JavaScript).

javascript:void(function(){
    var s = document.createElement("script");
    s.src = "http://localhost:8888/test/index.php?site="
              + encodeURIComponent(location.href);
    document.body.appendChild(s);
})();

Использование изображения:

javascript:void(function(){
    (new Image()).src = "http://localhost:8888/test/index.php?site=" +
         encodeURIComponent(location.href);
})();

EDIT alert + auto close

Как и было запрошено в комментариях, чисто JS-предупреждение, которое автоматически закрывается по истечении определенного времени. Я сохранил функциюпростой, для образовательных целей. Если вы ленивы, JQuery также является опцией, хотя излишне включать целую структуру для , автоматически скрывающего "эль"rt "box

/* @name        alertFade
   @description Shows a message, closing automatically after # milliseconds
   @param String message      Message to display
   @param number autoclose_ms Time in milliseconds till the message has to be closed
   @param number softFade_ms  Time in milliseconds for the fade animation*/
function alertFade(message, autoclose_ms, softFade_ms){
    if(typeof message == "undefined") message = "";
    if(isNaN(autoclose_ms)) autoclose_ms = 3000;
    if(isNaN(softFade_ms)) softFade_ms = 1000;
    var container = document.createElement("div"),
        alertBox = document.createElement("div"),
        alertContent = document.createElement("div"),
        dismiss = document.createElement("div");
    container.style.cssText = "position:fixed;top:0;left:0;width:100%;height:100%;display:table;opacity:1;background:transparent;";
    alertBox.style.cssText = "display:table-cell;vertical-align:middle;text-align:center;";
    alertContent.style.cssText = "display:inline-block;white-space:pre-wrap;word-wrap:break-word;background:#DDF;font-size:normal;padding:5px";
    dismiss.style.cssText = "font-size:small;border-bottom:1px solid #CCC";

    dismiss.appendChild(document.createTextNode("(Click to dismiss)"));
    dismiss.onclick = fadeClose;
    alertContent.appendChild(dismiss);
    alertContent.appendChild(document.createTextNode(message));
    alertBox.appendChild(alertContent);
    container.appendChild(alertBox);
    document.body.appendChild(container);
    var alertAutoClose = window.setTimeout(fadeClose, autoclose_ms);
    var fadeTimer;

    function closeAlert(){
        window.clearTimeout(alertAutoClose);
        window.clearInterval(fadeTimer);
        if(container.parentNode) container.parentNode.removeChild(container);
    }
    function fadeClose(){
        if(!softFade_ms) return closeAlert(); //No fade = close immediately

        var opacity = 1;
        fadeTimer = window.setInterval(function(){
            opacity -= .1; //Reduce the opacity by 10% per interval
            if(opacity <= 0) return closeAlert();
            container.style.opacity = opacity;
        }, softFade_ms/10);
    }
}
//Example:
alertFade("Message!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...