开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

使用 MooTools 或 jQuery AJAX 记录文本选择

最近我越来越多地看到一种技术(例如 CNNSI.com)是对所选文本的 AJAX 记录。这是有道理的——如果你检测到用户一遍又一遍地选择这些术语,你可能会假设你的访问者正在谷歌、雅虎等网站上搜索该术语。我已经使用我最喜欢的 JavaScript 库、MooTools 和另一个库复制了这个功能JavaScript 库,jQuery。

MooTools JavaScript

window.addEvent('domready',function(){
	//gets the selected text
	var getSelection = function() {
		return $try(
			function() { return window.getSelection(); },
			function() { return document.getSelection(); },
			function() { 
					var selection = document.selection && document.selection.createRange();
					if(selection.text) { return selection.text; }
					return false;
		      }
		) || false;
	};
	//event to listen
	var selectRequest = new Request({
		url: 'ajax-selection-copy.php',
		method: 'post'
	});
	$('content-area').addEvent('mouseup',function(e) {
		var selection = getSelection();
		if(selection && (selection = new String(selection).replace(/^\s+|\s+$/g,''))) {
			selectRequest.send('selection=' + encodeURI(selection));
		}
	});
});

第一步是尝试在我们指定的容器内的 mouseup 期间抓取选定的文本。如果我们找到文本选择,我们会向 PHP 脚本发出 AJAX 请求,该脚本将保存文本选择。

jQuery JavaScript

/* attempt to find a text selection */
function getSelected() {
	if(window.getSelection) { return window.getSelection(); }
	else if(document.getSelection) { return document.getSelection(); }
	else {
		var selection = document.selection && document.selection.createRange();
		if(selection.text) { return selection.text; }
		return false;
	}
	return false;
}
/* create sniffer */
$(document).ready(function() {
	$('#content-area').mouseup(function() {
		var selection = getSelected();
		if(selection && (selection = new String(selection).replace(/^\s+|\s+$/g,''))) {
			$.ajax({
				type: 'post',
				url: 'ajax-selection-copy.php',
				data: 'selection=' + encodeURI(selection)
			});
		}
	});
});

翻译成 jQuery 的 MooTools 代码。

PHP

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' && $selection = trim($_POST['selection'])) {
	mysql_query('INSERT INTO text_selections (selection,date_selected) VALUES(\''.mysql_escape_string(stripslashes($selection)).'\',NOW())');
}

上面的PHP代码非常原始。根据您的系统设置(PHP 框架、安全设置等),您将需要实施额外的措施来防止对该脚本的攻击。

记录文本选择是发现您的受众感兴趣的主题和/或术语的好方法。您可能还想在帖子中提供有关这些术语的更多信息。

您对此有何看法?你认为这太像 Spyjax 了吗?完全可以吗?

未经允许不得转载:我爱分享网 » 使用 MooTools 或 jQuery AJAX 记录文本选择

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏