Google Chrome «Ярлык приложения»: как автоматически загружать JavaScript? - PullRequest
29 голосов
/ 13 февраля 2012

Введение
В Google Chrome есть функция, которая позволяет создавать ярлыки на веб-страницах и делать их похожими на традиционные настольные приложения.

Например, ярлык для мобильного Twitter может быть

C:\Users\<username>\AppData\Local\Google\Chrome\Application\chrome.exe  --app=https://mobile.twitter.com/

Значок файла для этого приложения хранится в

C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Web Applications\mobile.twitter.com\https_80

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

У кого-нибудь есть какие-либо подробности, если эта функция доступна и какие файлы мне нужно создать?

Разъяснение

Я в основном открываю веб-страницу с помощью «Ярлыка приложения» в Chrome и хочу, чтобы она обновлялась каждые x секунд. Однако я не могу контролировать эту веб-страницу.

Я уверен, что в старых версиях Chrome это было возможно ... если только я не схожу с ума.

Ответы [ 2 ]

86 голосов
/ 16 февраля 2012

Расширения Chrome и их скрипты содержимого также загружаются при запуске Chrome в режиме приложения.

Итак, вы можете создать простое расширение, которое внедряет код JavaScript в страницу следующим образом:

1.Создайте файл manifest.json:

{
    "name": "Run code on twitter mobile",
    "version": "1.0",
    "manifest_version": 2,
    "content_scripts": [{
        "js": ["contentscript.js"],
        "matches": ["http://mobile.twitter.com/*"]
    }],
    "web_accessible_resources": ["script.js"]
}

2.Сценарий содержимого

Затем создайте файл с именем contentscript.js и добавьте нужный код JavaScript.Этот скрипт включается при каждой загрузке соответствующей страницы.Все методы DOM через объект document доступны напрямую.Однако window и document.defaultView do not указывают на объект window на странице [source] .

Есличтобы получить доступ к глобальным методам или свойствам, необходимо динамически создать <script> и внедрить его на странице (см. Создание расширения Chrome - внедрение кода на странице с помощью сценария содержимого ).

contentscript.js

var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
    s.parentNode.removeChild(s);
};

3.Сценарий, который будет внедрен.

Затем создайте файл с именем script.js и поместите его в ту же папку, что и manifest.json и contentscript.js.Код в script.js выполняется так, как если бы он был истинной частью затронутой страницы.

Ссылка на скрипты содержимого доступна здесь .

0 голосов
/ 16 февраля 2012

Полагаю, вы хотите включить JavaScript для «запуска» приложения, возможно, для изменения размера окна при загрузке целевого URL?

Вот что вы могли бы сделать, как предложено в этом посте

Создайте локально HTML-страницу, содержащую javascript, который вам нужно запустить.

Изменить это: C:\Users\<username>\AppData\Local\Google\Chrome\Application\chrome.exe --app=https://mobile.twitter.com/

к этому:

C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\Application\chrome.exe” –app=file:///C:/Documents%20and%20Settings/<username>/My%20Documents/My %20Custom%20Shortcuts/twitter_mobile_launcher.html

и ваш twitter_mobile_launcher.html файл будет выглядеть так:

<html>  
 <head>  
  <script type="text/javascript">  
   // Do what you need with your javascript, for example, resizing your window...
   window.resizeTo(300,400);  
   window.moveTo(300,0);  
   window.location = "https://mobile.twitter.com/";  
  </script>  
 </head>  
 <body>  
  <h1>If you see this, the redirect did not work properly.</h1>  
 </body>  
</html>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...