Другие два варианта:
Базовый пакет:
df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df
sqldf
package:
library(sqldf)
sqldf('SELECT name,
MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1,
MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
FROM dat1
GROUP BY name')
Если вы не хотите изменять текущий код, вы можете просто переопределить функцию window.open()
:
var openedWindows = [];
window._open = window.open; // saving original function
window.open = function(url,name,params){
openedWindows.push(window._open(url,name,params));
// you can store names also...
}
Запустить этот код перед вызовом window.open()
. Все ссылки на открытые окна будут храниться в массиве openedWindows
. Вы можете получить к ним доступ в любом месте
Лучше всего назвать окна с помощью префикса и счетчика.
Мне нужно было определить, было ли именованное окно (т.е. CBCheckout) уже открыто и использовалось это:
var signupWindow = window.open('','CBCheckout','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=1,height=1');
try {
if (signupWindow.document.location.href == "about:blank") {
signupWindow.close();
signupWindow = undefined;
}
} catch (e) { }
Это подтвердило ссылку на именованное открытое окно. Если он не существует, вы увидите всплывающее окно с небольшим окном.
Если вы знаете возможные имена окон, вы можете просмотреть имена, пытаясь найти их.
Хорошо, я использовал ответы на этот вопрос в Oracle CRM onDemand, чтобы отключить выбор во всплывающем окне, выполняющем скрипт из родительского окна, и это сработало! (Я не контролирую генерацию всплывающих окон, они открываются каркасом приложения)
Посмотрим, как я это сделал:
Контекст: на подробной странице пользователь может добавьте информацию, щелкнув значок увеличительного стекла >>> открывается новое окно, содержащее форму поиска, но выбор нарушает администратора: если пользователь изменит свое значение по умолчанию, он / она получит доступ к запрещенным записям!
Первый подход: отключить это сейчас!
Попытка: я нашел, что изображение onclick связано с инструментами моего браузера (F12). Был метод openAssocPopup, а затем я знал имя дочернего окна: «OccamPopup1»:)
Хорошо! Итак, давайте сделаем волшебство (выполнено в родительском окне):
blockquote>window.open("","OccamPopup1").document.getElementById("frmSearch.AQ").setAttribute("disabled", true);
Я думаю, это может помочь, так как этот вопрос мне тоже помог. Ты был прав. Теперь я пытаюсь обернуть объект документа ребенка в объект родительского jQuery, чтобы я мог получить доступ к DOM всего дочернего объекта ... но это еще одна история ...
Я не думаю, что вы можете, если не знаете имена окон, которые, как я предполагаю, вы этого не делаете. (Если вы знаете их имена, вы можете использовать window.open("", "name")
, чтобы получить ссылку на них.)
Лучшим вариантом является, конечно, запоминание ссылки, возвращенной с window.open
в первую очередь & nbsp; & mdash; но вы это знаете. : -)
window.open("", "name")
, я не думаю, что есть третья альтернатива.
– T.J. Crowder
14 June 2011 в 08:32
window.open2()
:) И изменить все существующие.open()
вызовы на.open2()
. Но похоже, что @Govind не хочет ничего менять в своих кодах ... – Hrant Khachatrian 14 June 2011 в 15:41