2013-09-08 5 views
0

Я начинаю строить расширение Chrome. У меня возникла проблема с использованием функции, описанной в документе разработчика расширений Chrome, чтобы создать кнопку для создания новой вкладки в «popup.html». Он не работает независимо от того, какие методы я пытался использовать в Stack Overflow. Мой код выглядит следующим образом:Расширение Chrome: создайте новую вкладку, нажав кнопку

<html> 
<head> 
<title>Facebook Connect For Chrome Extension</title> 
<script type="text/javascript" src="background.js"></script> 
<script type="text/javascript" src="popup.js"></script> 
<script> 
function showIndex(){ 
    var index_url="/index.html", 
    chrome.tabs.create({ 
    url: index_url 
    }), 
    } 
</script> 
<body> 
<button value="tab" style="width:100px; height:100px;" onclick="showIndex();">Go to Index</button> 
</body> 

или

function createTab() { 
    chrome.tabs.create({url: "/index.html"}); 
} 
<a href="#" onclick="creatTab();">Go to Index</a> 

Ни вариант, кажется, работает.

Так что я задаюсь вопросом, должна ли эта функция помещаться в background.js? Если нет, скажите, пожалуйста, что не так с этим кодом. Заранее спасибо!

BTW Я изменил URL-адрес на www.stackoverflow.com. Он все тот же - не работает.

ответ

0

Вы можете использовать window.open(url, title, options), чтобы открыть всплывающее окно с помощью JavaScript.

options является строкой, содержащей один или несколько из этих переменных (или пусто):


width ширина окна

height высота окна

location URL-видимой или нет

statusbar visible or not

menubar MenuBar невидим или

directories Я предполагаю, что это закладка бруску

toolbar панель (назад, домой и т.д.) видимую или нет

resizable или нет изменяемых

scrollbars включить или выключить полосы прокрутки


.: например

window.open('http://website.com/popup.html', 'Popup Window', 'width=640,height=480,location=yes,scrollbars=yes');

1
function showIndex(){ 

    var index_url="/index.html",//why are you using "," instead of ";"? 

    chrome.tabs.create({ 
     url: index_url 
    }), //why are you using "," instead of ";"? 
} 

почему вы используете "" в конце строки, вместо ";"?

+0

Вы добавили разрешение на вкладку api в manifest.json? «Разрешения»: [ «вкладки» ], – crzyonez777

+0

Вы попробовали? chrome.tabs.create ({url: "/index.html"}, function() {}); – crzyonez777

2

Похоже, что вы создали неправильный код в своем HTML-коде.

Возможно, проблема связана с тем, что Chrome не позволяет использовать «небезопасный» код в расширениях. See the documentation here. У вас не может быть javascript в вашем html. Вы должны подписаться на обработчик событий на элементе DOM.

<html> 
<head> 
<title>Facebook Connect For Chrome Extension</title> 
<script type="text/javascript" src="background.js"></script> 
<script type="text/javascript" src="popup.js"></script> 
<body> 
<button id="index" value="tab" style="width:100px; height:100px;">Go to Index</button> 
<script type="text/javascript" src="indexStuff.js"></script> 
</body> 
</html> 

Для этого вам понадобится новый indexStuff.JS файл с этим

function showIndex() { 
    var index_url = "/index.html"; 
    chrome.tabs.create({ 
     url: index_url 
    }); 
} 

document.getElementById('index').addEventListener("click", showIndex); 

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

Смежные вопросы