Получите текущую страницу URL от расширения боковой панели Firefox

Самый простой способ добиться этого - создать файл UIImageView с «Default.png» в верхней части вашего первого ViewController UIView.

И добавьте таймер, чтобы удалить UIImageView в считанные секунды.

22
задан nickf 4 January 2009 в 12:30
поделиться

5 ответов

window.top.getBrowser().selectedBrowser.contentWindow.location.href;

мог бы работать, иначе я думаю, что необходимо использовать:

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);

mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;
15
ответ дан wimh supports Monica 29 November 2019 в 04:44
поделиться

https://developer.mozilla.org/En/Working_with_windows_in_chrome_code

, Если необходимо получить доступ к основному браузеру от кода, работающего на боковой панели, Вы будете что-то как то, что отправленный Wimmel, кроме последней строки мог быть упрощен до

mainWindow.content.location.href

(альтернативно, Вы могли использовать API, возвращая nsIURI).

В зависимости от Вашей задачи, могло бы иметь смысл выполнять код в окне браузера вместо этого (например, в обработчике загрузок страницы), тогда это может получить доступ к текущей странице через content ярлык и боковая панель через document.getElementById("sidebar").contentDocument или .contentWindow.

2
ответ дан Nickolay 29 November 2019 в 04:44
поделиться

Здравствуйте,

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

Вот исходный код небольшого сайта:

<html>
<head>
<title>Test</title>
<script type="text/javascript">
function Fall1 () {

    alert(window.top.getBrowser().selectedBrowser.contentWindow.location.href);
}

function Fall2() {
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);

alert(mainWindow.getBrowser().selectedBrowser.contentWindow.location.href);
}

function Fall3() {
alert(document.getElementById("sidebar").contentWindow.location.href);
}

</script>
</head>
<body>
<form name="Probe" action="">

<input type="button" value="Fall1"
onclick="Fall1()">

<input type="button" value="Fall2"
onclick="Fall2()">

<input type="button" value="Fall3"
onclick="Fall13()">
</form>
</body>
</html>
-1
ответ дан 29 November 2019 в 04:44
поделиться

Я наткнулся на этот пост в поисках ответа на тот же вопрос.

На самом деле, я думаю, это так же просто, как

alert(window.content.location.href)

См. Также https://developer.mozilla.org/en/DOM/window.content

20
ответ дан 29 November 2019 в 04:44
поделиться

Мне кажется, это нормально работает

function getCurrentURL(){

    var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser");

    var currBrowser = currentWindow.getBrowser();
    var currURL = currBrowser.currentURI.spec;

    return currURL;
}
4
ответ дан 29 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

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