GRMrGecko
14 years ago
commit
4ab4b8d480
7 changed files with 554 additions and 0 deletions
-
252Action.ai
-
BINAction.png
-
55Info.plist
-
12Settings.plist
-
100flashfire.css
-
118flashfire.js
-
17global.html
252
Action.ai
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
After Width: 14 | Height: 14 | Size: 1.1 KiB |
@ -0,0 +1,55 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|||
<plist version="1.0"> |
|||
<dict> |
|||
<key>Author</key> |
|||
<string>Mr. Gecko's Media</string> |
|||
<key>CFBundleDisplayName</key> |
|||
<string>FlashFire</string> |
|||
<key>CFBundleIdentifier</key> |
|||
<string>com.MrGeckosMedia.FlashFire</string> |
|||
<key>CFBundleInfoDictionaryVersion</key> |
|||
<string>6.0</string> |
|||
<key>CFBundleShortVersionString</key> |
|||
<string>0.1</string> |
|||
<key>CFBundleVersion</key> |
|||
<string>0.1</string> |
|||
<key>Chrome</key> |
|||
<dict> |
|||
<key>Global Page</key> |
|||
<string>global.html</string> |
|||
</dict> |
|||
<key>Content</key> |
|||
<dict> |
|||
<key>Scripts</key> |
|||
<dict> |
|||
<key>Start</key> |
|||
<array> |
|||
<string>flashfire.js</string> |
|||
</array> |
|||
</dict> |
|||
<key>Stylesheets</key> |
|||
<array> |
|||
<string>flashfire.css</string> |
|||
</array> |
|||
</dict> |
|||
<key>Description</key> |
|||
<string>Blocks Flash</string> |
|||
<key>ExtensionInfoDictionaryVersion</key> |
|||
<string>1.0</string> |
|||
<key>Permissions</key> |
|||
<dict> |
|||
<key>Website Access</key> |
|||
<dict> |
|||
<key>Include Secure Pages</key> |
|||
<true/> |
|||
<key>Level</key> |
|||
<string>All</string> |
|||
</dict> |
|||
</dict> |
|||
<key>Update Manifest URL</key> |
|||
<string>http://mrgeckosmedia.com/FlashFire.plist</string> |
|||
<key>Website</key> |
|||
<string>http://mrgeckosmedia.com/</string> |
|||
</dict> |
|||
</plist> |
@ -0,0 +1,12 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|||
<plist version="1.0"> |
|||
<array> |
|||
<dict> |
|||
<key>DefaultValue</key> |
|||
<string></string> |
|||
<key>Key</key> |
|||
<string>whitelist</string> |
|||
</dict> |
|||
</array> |
|||
</plist> |
@ -0,0 +1,100 @@ |
|||
.flashfireBlocked { |
|||
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, 0.15)), to(rgba(0, 0, 0, 0.15))) !important; |
|||
border:1px solid rgba(0, 0, 0, 0.5) !important; |
|||
display: table !important; |
|||
-webkit-user-select: none !important; |
|||
font-family:"Lucida Grande", "Helvetica Neue", Helvetica, sans-serif !important; |
|||
} |
|||
|
|||
.flashfireBlocked:active { |
|||
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(255, 255, 255, 0.15))) !important; |
|||
} |
|||
|
|||
.flashfireBlocked .container { |
|||
position: relative !important; |
|||
width: inherit !important; |
|||
height: inherit !important; |
|||
margin: 0px !important; |
|||
} |
|||
|
|||
.flashfireBlocked .vText { |
|||
display: table-cell !important; |
|||
vertical-align: middle !important; |
|||
width: inherit !important; |
|||
height: inherit !important; |
|||
} |
|||
.flashfireBlocked .hText { |
|||
float: left !important; |
|||
position: relative !important; |
|||
left: 50% !important; |
|||
height: auto !important; |
|||
width: auto; |
|||
} |
|||
.flashfireBlocked .textContainer { |
|||
float: left !important; |
|||
position: relative !important; |
|||
left: -50% !important; |
|||
width: auto !important; |
|||
height: auto !important; |
|||
} |
|||
.flashfireBlocked .textContainer.rotate { |
|||
left: -90% !important; |
|||
-webkit-transform: rotate(-90deg); |
|||
} |
|||
.flashfireBlocked .textContainer .text { |
|||
border-radius: 4.0px !important; |
|||
border: 3px solid rgba(0, 0, 0, 0.3) !important; |
|||
font-size: 20px !important; |
|||
width: auto !important; |
|||
color: rgba(0, 0, 0, 0.3) !important; |
|||
font-weight: bold !important; |
|||
padding: 14px 5px 7px 5px !important; |
|||
-webkit-user-select: none !important; |
|||
cursor: default !important; |
|||
background: none !important; |
|||
position: relative !important; |
|||
height: auto !important; |
|||
line-height: 0 !important; |
|||
} |
|||
.flashfireBlocked .textContainer.mini .text { |
|||
border-radius: 4.0px !important; |
|||
font-size: 8px !important; |
|||
border: 1px solid rgba(0, 0, 0, 0.3) !important; |
|||
padding: 6px 3px 4px 3px !important; |
|||
} |
|||
.flashfireBlocked .textContainer .textInset { |
|||
border: 0px !important; |
|||
font-size: 20px !important; |
|||
width: auto !important; |
|||
color: rgba(255, 255, 255, 0.45) !important; |
|||
font-weight: bold !important; |
|||
padding: 16px 7px 10px 8px !important; |
|||
-webkit-user-select: none !important; |
|||
cursor: default !important; |
|||
background: none !important; |
|||
height: auto !important; |
|||
line-height: 0 !important; |
|||
position: absolute !important; |
|||
top: 1px !important; |
|||
right: 1px !important; |
|||
} |
|||
.flashfireBlocked .textContainer.mini .textInset { |
|||
font-size: 8px !important; |
|||
padding: 6px 3px 10px 8px !important; |
|||
} |
|||
|
|||
.flashfireBlocked .action { |
|||
position: absolute !important; |
|||
left: 10px !important; |
|||
top: 10px !important; |
|||
width: 14px !important; |
|||
height: 14px !important; |
|||
background: url("action.png") no-repeat !important; |
|||
opacity: 0.25 !important; |
|||
-webkit-transition-property: opacity; |
|||
-webkit-transition-duration: 0.5s; |
|||
z-index: 2 !important; |
|||
} |
|||
.flashfireBlocked .action:hover { |
|||
opacity: 0.5 !important; |
|||
} |
@ -0,0 +1,118 @@ |
|||
document.addEventListener("beforeload", handleBeforeLoadEvent, true); |
|||
var elementsBlocked = new Array(); |
|||
|
|||
function handleBeforeLoadEvent(event) { |
|||
const element = event.target; |
|||
if (element instanceof HTMLEmbedElement || element instanceof HTMLObjectElement) { |
|||
if (element.allowedToLoad) |
|||
return; |
|||
|
|||
if (element instanceof HTMLEmbedElement) { |
|||
var source = element.getAttribute("src"); |
|||
if (!source.match("swf")) |
|||
return; |
|||
} else if (element instanceof HTMLObjectElement) { |
|||
var foundFile; |
|||
var elementNodes = element.childNodes; |
|||
for (i=0; i<elementNodes.length; i++) { |
|||
if (elementNodes[i].nodeName=="PARAM" && elementNodes[i].name.match("movie")) { |
|||
foundFile = elementNodes[i].value.match("swf"); |
|||
if (!foundFile) { |
|||
var type = element.getAttribute("type"); |
|||
if (type!=null && (!type.match("flash") && !type.match("shockwave") && !type.match("futuresplash"))) |
|||
return; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
//console.log(safari.self.tab.canLoad(event, {name: "getSettings", data: ""}));
|
|||
|
|||
event.preventDefault(); |
|||
|
|||
blockElement(element); |
|||
} |
|||
} |
|||
|
|||
function unblockElement(event) { |
|||
var element = event.target; |
|||
while (element.className!="flashfireBlocked") |
|||
element = element.parentNode; |
|||
|
|||
var elementID = element.getAttribute("elementID"); |
|||
|
|||
var blockedElement = elementsBlocked[elementID]; |
|||
blockedElement.allowedToLoad = true; |
|||
|
|||
element.parentNode.replaceChild(blockedElement, element); |
|||
|
|||
event.stopPropagation(); |
|||
event.preventDefault(); |
|||
} |
|||
|
|||
function blockElement(element) { |
|||
if (element.getAttribute("elementID")!=null) |
|||
return; |
|||
var elementID = elementsBlocked.length; |
|||
element.setAttribute("elementID", elementID); |
|||
elementsBlocked[elementID] = element; |
|||
|
|||
var text = "Flash"; |
|||
|
|||
var flashfireBlockedDiv = document.createElement("div"); |
|||
flashfireBlockedDiv.setAttribute("elementID", elementID); |
|||
flashfireBlockedDiv.style = element.style; |
|||
flashfireBlockedDiv.style.width = element.offsetWidth + "px"; |
|||
flashfireBlockedDiv.style.height = element.offsetHeight + "px"; |
|||
flashfireBlockedDiv.className = "flashfireBlocked"; |
|||
flashfireBlockedDiv.onclick = unblockElement; |
|||
|
|||
var flashfireContainerDiv = document.createElement("div"); |
|||
flashfireContainerDiv.className = "container"; |
|||
flashfireBlockedDiv.appendChild(flashfireContainerDiv); |
|||
|
|||
var flashfireVDiv = document.createElement("div"); |
|||
flashfireVDiv.className = "vText"; |
|||
flashfireContainerDiv.appendChild(flashfireVDiv); |
|||
var flashfireHDiv = document.createElement("div"); |
|||
flashfireHDiv.className = "hText"; |
|||
flashfireVDiv.appendChild(flashfireHDiv); |
|||
|
|||
var flashfireTextContainerDiv = document.createElement("div"); |
|||
flashfireTextContainerDiv.className = "textContainer"; |
|||
flashfireHDiv.appendChild(flashfireTextContainerDiv); |
|||
|
|||
var flashfireTextInsetDiv = document.createElement("div"); |
|||
flashfireTextInsetDiv.className = "textInset"; |
|||
flashfireTextInsetDiv.innerHTML = text; |
|||
flashfireTextContainerDiv.appendChild(flashfireTextInsetDiv); |
|||
var flashfireTextDiv = document.createElement("div"); |
|||
flashfireTextDiv.className = "text"; |
|||
flashfireTextDiv.innerHTML = text; |
|||
flashfireTextContainerDiv.appendChild(flashfireTextDiv); |
|||
|
|||
var flashfireActionDiv = document.createElement("div"); |
|||
flashfireActionDiv.className = "action"; |
|||
flashfireContainerDiv.appendChild(flashfireActionDiv); |
|||
|
|||
setTimeout(function(){element.parentNode.replaceChild(flashfireBlockedDiv, element);}, 5); |
|||
var changeSize = function() { |
|||
if (flashfireBlockedDiv.offsetWidth>0 && flashfireTextDiv.offsetWidth>0 && flashfireBlockedDiv.offsetHeight>0 && flashfireTextDiv.offsetHeight>0) { |
|||
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 4) < flashfireTextDiv.offsetHeight) { |
|||
flashfireTextContainerDiv.className += " mini"; |
|||
} |
|||
|
|||
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth) { |
|||
flashfireTextContainerDiv.className += " rotate"; |
|||
flashfireHDiv.style.width = 17; |
|||
} |
|||
if ((flashfireBlockedDiv.offsetWidth - 2) <= flashfireHDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 17) <= flashfireTextDiv.offsetHeight) { |
|||
flashfireHDiv.style.width = "inherit"; |
|||
flashfireTextContainerDiv.style.display = "none"; |
|||
} |
|||
} else { |
|||
setTimeout(changeSize, 100); |
|||
} |
|||
}; |
|||
changeSize(); |
|||
} |
@ -0,0 +1,17 @@ |
|||
<!DOCTYPE HTML> |
|||
<script> |
|||
safari.application.addEventListener("message", handleMessage, false); |
|||
|
|||
function handleMessage(theEvent) { |
|||
if (theEvent.name=="canLoad") { |
|||
var message = theEvent.message; |
|||
console.log(message); |
|||
if (message.name=="getSettings") { |
|||
console.log("Get Settings"); |
|||
var data = message.data; |
|||
theEvent.message = safari.extension.settings.bob; |
|||
} |
|||
} |
|||
} |
|||
safari.application.addEventListener("message", handleMessage, false); |
|||
</script> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue