Opera to Phone v1.3.2 (bug fixes)

This commit is contained in:
rich.tibbett
2010-12-17 10:34:51 +00:00
parent 22f03890c9
commit 1dc3283053
2 changed files with 71 additions and 67 deletions

View File

@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget xmlns="http://www.w3.org/ns/widgets" id="https://addons.opera.com/addons/extensions/details/opera-to-phone/" version="1.3.1"> <widget xmlns="http://www.w3.org/ns/widgets" id="https://addons.opera.com/addons/extensions/details/opera-to-phone/" version="1.3.2">
<name>Opera to Phone</name> <name>Opera to Phone</name>
<access origin="https://chrometophone.appspot.com"/> <access origin="https://chrometophone.appspot.com"/>
<icon src="icon_64.png"/> <icon src="icon_64.png"/>

View File

@@ -3,74 +3,78 @@
// @include https://* // @include https://*
// ==/UserScript== // ==/UserScript==
var ACTION_CAPTURE_SELECTION = 'capture_selection'; if ( window.location === window.parent.location) {
var ACTION_SEND_PAGE = 'send_to_phone';
var ACTION_CLOSE_TAB = 'close_tab';
var currentUrl = document.location.href; var ACTION_CAPTURE_SELECTION = 'capture_selection';
var ACTION_SEND_PAGE = 'send_to_phone';
var ACTION_CLOSE_TAB = 'close_tab';
opera.extension.addEventListener( 'message', function( message ) { var currentUrl = document.location.href;
if( message.data.action === ACTION_CAPTURE_SELECTION ) {
var pageInfo = { opera.extension.addEventListener( 'message', function( message ) {
action: ACTION_SEND_PAGE, if( message.data.action === ACTION_CAPTURE_SELECTION ) {
data: { var pageInfo = {
link: currentUrl, action: ACTION_SEND_PAGE,
title: document.title, data: {
selection: window.getSelection() ? window.getSelection().toString() : null link: currentUrl,
title: document.title,
selection: window.getSelection() ? window.getSelection().toString() : null
}
};
// URL overrides
if ( currentUrl.match( /^http[s]?:\/\/maps\.google\./i ) ||
currentUrl.match( /^http[s]?:\/\/www\.google\.[a-z]{2,3}(\.[a-z]{2})\/maps/i ) ) {
var link = document.getElementById('link');
if (link && link.href)
pageInfo.data.link = link.href;
} }
}; opera.extension.postMessage( pageInfo );
// URL overrides
if ( currentUrl.match( /^http[s]?:\/\/maps\.google\./i ) ||
currentUrl.match( /^http[s]?:\/\/www\.google\.[a-z]{2,3}(\.[a-z]{2})\/maps/i ) ) {
var link = document.getElementById('link');
if (link && link.href)
pageInfo.data.link = link.href;
} }
opera.extension.postMessage( pageInfo ); }, false);
}
}, false);
function findAndReplace(searchText, replacement, searchNode) { function findAndReplace(searchText, replacement, searchNode) {
if (!searchText || typeof replacement === 'undefined') { if (!searchText || typeof replacement === 'undefined') {
// Throw error here if you want... // Throw error here if you want...
return; return;
} }
var regex = typeof searchText === 'string' ? var regex = typeof searchText === 'string' ?
new RegExp(searchText, 'g') : searchText, new RegExp(searchText, 'g') : searchText,
childNodes = (searchNode || document.body).childNodes, childNodes = (searchNode || document.body).childNodes,
cnLength = childNodes.length, cnLength = childNodes.length,
excludes = 'html,head,style,title,link,meta,script,object,iframe'; excludes = 'html,head,style,title,link,meta,script,object,iframe';
while (cnLength--) { while (cnLength--) {
var currentNode = childNodes[cnLength]; var currentNode = childNodes[cnLength];
if (currentNode.nodeType === 1 && if (currentNode.nodeType === 1 &&
(excludes + ',').indexOf(currentNode.nodeName.toLowerCase() + ',') === -1) { (excludes + ',').indexOf(currentNode.nodeName.toLowerCase() + ',') === -1) {
arguments.callee(searchText, replacement, currentNode); arguments.callee(searchText, replacement, currentNode);
} }
if (currentNode.nodeType !== 3 || !regex.test(currentNode.data) ) { if (currentNode.nodeType !== 3 || !regex.test(currentNode.data) ) {
continue; continue;
} }
var parent = currentNode.parentNode, var parent = currentNode.parentNode,
frag = (function(){ frag = (function(){
var html = currentNode.data.replace(regex, replacement), var html = currentNode.data.replace(regex, replacement),
wrap = document.createElement('div'), wrap = document.createElement('div'),
frag = document.createDocumentFragment(); frag = document.createDocumentFragment();
wrap.innerHTML = html; wrap.innerHTML = html;
while (wrap.firstChild) { while (wrap.firstChild) {
frag.appendChild(wrap.firstChild); frag.appendChild(wrap.firstChild);
} }
return frag; return frag;
})(); })();
parent.insertBefore(frag, currentNode); parent.insertBefore(frag, currentNode);
parent.removeChild(currentNode); parent.removeChild(currentNode);
} }
}
window.addEventListener( 'DOMContentLoaded', function() {
if( currentUrl.match( /^http[s]?:\/\/www\.google\.com\/accounts\/ServiceLogin\?(.*)?ahname=Chrome\+to\+Phone(.*)?$/i ) ) {
// Opera log in message so users know what they are logging in to.
findAndReplace('Chrome', 'Opera', document.body);
} else if (currentUrl.match( /^http:\/\/code\.google\.com\/p\/chrometophone\/logo(.*)?$/i )) {
opera.extension.postMessage({
action: ACTION_CLOSE_TAB
});
} }
}, false); window.addEventListener( 'DOMContentLoaded', function() {
if( currentUrl.match( /^http[s]?:\/\/www\.google\.com\/accounts\/ServiceLogin\?(.*)?ahname=Chrome\+to\+Phone(.*)?$/i ) ) {
// Opera log in message so users know what they are logging in to.
findAndReplace('Chrome', 'Opera', document.body);
} else if (currentUrl.match( /^http:\/\/code\.google\.com\/p\/chrometophone\/logo(.*)?$/i )) {
opera.extension.postMessage({
action: ACTION_CLOSE_TAB
});
}
}, false);
}