Reputation: 97
Is there a chance to disable these two things from my site? (View Source) and (Ctrl + C )
Upvotes: 5
Views: 23288
Reputation: 61
It's possible to disable CTRL+U and CTRL+C. This may work:
shortcut = {
all_shortcuts: {},
add: function (e, t, n) {
var r = {
type: "keydown",
propagate: !1,
disable_in_input: !1,
target: document,
keycode: !1
};
if (n) for (var i in r) "undefined" == typeof n[i] && (n[i] = r[i]);
else n = r;
r = n.target, "string" == typeof n.target && (r = document.getElementById(n.target)), e = e.toLowerCase(), i = function (r) {
r = r || window.event;
if (n.disable_in_input) {
var i;
r.target ? i = r.target : r.srcElement && (i = r.srcElement), 3 == i.nodeType && (i = i.parentNode);
if ("INPUT" == i.tagName || "TEXTAREA" == i.tagName) return
}
r.keyCode ? code = r.keyCode : r.which && (code = r.which), i = String.fromCharCode(code).toLowerCase(), 188 == code && (i = ","), 190 == code && (i = ".");
var s = e.split("+"),
o = 0,
u = {
"`": "~",
1: "!",
2: "@",
3: "#",
4: "$",
5: "%",
6: "^",
7: "&",
8: "*",
9: "(",
0: ")",
"-": "_",
"=": "+",
";": ":",
"'": '"',
",": "<",
".": ">",
"/": "?",
"\\": "|"
}, f = {
esc: 27,
escape: 27,
tab: 9,
space: 32,
"return": 13,
enter: 13,
backspace: 8,
scrolllock: 145,
scroll_lock: 145,
scroll: 145,
capslock: 20,
caps_lock: 20,
caps: 20,
numlock: 144,
num_lock: 144,
num: 144,
pause: 19,
"break": 19,
insert: 45,
home: 36,
"delete": 46,
end: 35,
pageup: 33,
page_up: 33,
pu: 33,
pagedown: 34,
page_down: 34,
pd: 34,
left: 37,
up: 38,
right: 39,
down: 40,
f1: 112,
f2: 113,
f3: 114,
f4: 115,
f5: 116,
f6: 117,
f7: 118,
f8: 119,
f9: 120,
f10: 121,
f11: 122,
f12: 123
}, l = !1,
c = !1,
h = !1,
p = !1,
d = !1,
v = !1,
m = !1,
y = !1;
r.ctrlKey && (p = !0), r.shiftKey && (c = !0), r.altKey && (v = !0), r.metaKey && (y = !0);
for (var b = 0; k = s[b], b < s.length; b++) "ctrl" == k || "control" == k ? (o++, h = !0) : "shift" == k ? (o++, l = !0) : "alt" == k ? (o++, d = !0) : "meta" == k ? (o++, m = !0) : 1 < k.length ? f[k] == code && o++ : n.keycode ? n.keycode == code && o++ : i == k ? o++ : u[i] && r.shiftKey && (i = u[i], i == k && o++);
if (o == s.length && p == h && c == l && v == d && y == m && (t(r), !n.propagate)) return r.cancelBubble = !0, r.returnValue = !1, r.stopPropagation && (r.stopPropagation(), r.preventDefault()), !1
}, this.all_shortcuts[e] = {
callback: i,
target: r,
event: n.type
}, r.addEventListener ? r.addEventListener(n.type, i, !1) : r.attachEvent ? r.attachEvent("on" + n.type, i) : r["on" + n.type] = i
},
remove: function (e) {
var e = e.toLowerCase(),
t = this.all_shortcuts[e];
delete this.all_shortcuts[e];
if (t) {
var e = t.event,
n = t.target,
t = t.callback;
n.detachEvent ? n.detachEvent("on" + e, t) : n.removeEventListener ? n.removeEventListener(e, t, !1) : n["on" + e] = !1
}
}
},
shortcut.add("Ctrl+U",function(){
// Script to be executed when user press CTRL+U;This also disable and cancel the CTRL+U method
}),
shortcut.add("Ctrl+C",function(){
// Script to be executed when user press CTRL+C;This also disable and cancel the CTRL+C method
}),
For demo, you can visit my fiddle:
http://jsfiddle.net/dVSRM/
So the conclusion is it's possible to disable the CTRL+U and CTRL+C. But the high-grade plagiarism can know this and never uses the shortcut to view the source code. This tips can be for your reference if someone make a question about disabling the view source shortcut. But the CTRL+C is include in this script.
This is my script. Thank you. See you later!
Upvotes: 6
Reputation: 73005
As others have said, there is no point to doing this, as well as the fact that it is impossible.
It's like a newspaper giving out newspapers, but without letting people take clippings. If they have to read it to know what it is, then can copy it.
Make the newspaper out of steel, they will just use laser to clip bits out, or take a photo.
Make the text invisible, no one can read it.
Upvotes: 3
Reputation: 104188
This isn't possible. You could try to somehow obfuscate the code, but you need to send something to client, don't you? You could use AJAX calls to load your html. This way, the source that the browser will show could be almost empty. However, there is nothing you can do to prevent an experienced user from viewing everything you are sending to the client. In fact there are so many tools he/she can use to reconstruct the page that any technique you will fight hard to apply, will only delay him/her for a couple of minutes.
Regarding the Ctrl-C you could add javascript to block it, but it is useless, since the user can always disable javascript. In fact many users will find interception of right-click very annoying.
All these could have a meaning if you are building an intranet application or you can ship an integrated browser for users to view the application. With public html, I believe it isn't even worth trying. One solution would be to build your application with flash or another plug-in. This way you can encrypt everything you've sent to the client.
Upvotes: 19
Reputation: 76077
Send the pages as raster images (JPG, PNG, etc.) with area links instead of text xD
Upvotes: 3
Reputation: 26682
If you don't want users to view the code of your webpage then you should write your own web browser and define your own HTML protocol.
But when you create a client application and use SOAP/Web services to send data to those clients, then you will be able to keep the code hidden on anything the client sees. (They would need a debugger to "hack" your application.)
Of course, one way to distribute such an application would be by using Silverlight or Flash. It would still show up in browsers that have Flash or Silverlight enabled but they will not be able to see the code of anything inside the application.
Upvotes: 1
Reputation: 12187
If you really don't want to give your code away there isn't much you can do.
Using flash or a java applet will make it a little more difficult, but even this can be decompiled.
Upvotes: 0
Reputation: 2614
There is no way to stop someone from reading the code you send to the browser. Even if you add browser tricks they could use an app that mimics a browser. The best thing to do is to move important code to the server, where they can't get at it.
Rather compete on other axes - usability, service, first mover advantage, etc than trying to stop someone from stealing your code.
Update: one thing you could do is use Google Web Toolkit, because then you'll be working in Java and your competitor/copier will spend their time deconstructing your Javascript.
What are you trying to protect? HTML/Javascript/images/server locations?
Upvotes: 3
Reputation: 1497
It's pretty pointless trying to disable the 'view source' and 'ctrl-c' functionality, as anything you try will be easy to circumvent. You can use some JavaScript to stop the right-mouse button from displaying the context menu, but that's easy for the user to disable.
If it's JavaScript, you can use a JavaScript obfuscation program or compactor which will help to hide your code a bit.
Here's a couple to get you started.
http://www.javascriptobfuscator.com/
javascriptcompressor.com
Upvotes: 4
Reputation: 3018
The best you could do is to obfuscate your javascript. Any encryption will have to let the browser decrypt it. Catch-22.
Upvotes: 0
Reputation: 2576
It is impossible. But if you really want to avoid copying information, you can generate image with text on it. Of course, Google and other search engines will not index your site information. But sometimes it is the goal :-)
Upvotes: 0