Tapestry.ScriptManager.contains firsts lines are:
return $A(collection).any(function (element)
var existing = element[prop];
if (existing.blank()) return false;
If element doesn't have the prop, then the existing var is null and existing.blank() throws an exception because the call of a method to a null variable. This problem happens for example (because of this i detected it) when i want to update a zone with a block that also loads stylesheets and scripts and, in the original page, there are script and or style tags embedded (<style> without href or <script> without src). In the loop looking for an existing script or style tag that had already loaded the new script or tag in the ajax response, the existing variable in the code is null and the error triggers.
The solution is very simple, i think:
if (existing == null || existing.blank()) return false;